Jestem nowym użytkownikiem Web API piszącym usługę RESTFul Web Api w .Net 4. Skonfigurowałem kontroler dla klasy, którą wywołuję Authentication
. Problem polega na tym, że kiedy wysyłam lub umieszczam dane JSON do usługi web api, moje programy obsługi w kontrolerze są wywoływane, ale obiekty parametrów zawierają w nich dane NULL. Mogę pomyślnie pobrać dane, ale Post i Put wymyślają puste obiekty parametrów..NET 4 Web API odbiera dane NULL w parametrach
Testowałem z aplikacji klienckiej i Fiddlera, a otrzymałem taki sam wynik. Oto co ja przesyłam z Skrzypek:
Action: PUT
URI: http://127.0.0.1:81/Authentication/xyz/
HTTP Version: HTTP/1.1
Request Headers:
User-Agent: Fiddler
Host: 127.0.0.1:81
Content-Type: application/json; charset=utf-8
Content-Length: 75
Request Body:
{"hashvalue":"kbVFNeBbNHmYQXXlS6d7Ag==","password":"test","username":"dan"}
Kiedy ustawić punkt przerwania w procedurze obsługi umieścić w kontrolerze Authentication:
public void Put(string IDstring, Authentication value)
{
}
otrzymuję następujący w oknie Watch:
IDstring null string
value {bbsRESTResources.Authentication} bbsRESTResources.Authentication
hashvalue null string
password null string
username null string
Moja klasa uwierzytelniania wygląda następująco:
namespace bbsRESTResources
{
public class Authentication
{
public string username;
public string password;
public string hashvalue;
}
}
moja Droga wygląda następująco:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Proszę nie martwić się o to, czy nie jest to dobry sposób, aby obsługiwać uwierzytelnianie. To tylko pierwszy krok w testowaniu mojej aplikacji od końca do końca. Szukałem przykładów innych osób mających ten problem i nie znalazłem żadnego.
Oczyściłem swoją trasę, aby wysłać {username} i zmieniono deklarację metody na: public void Put (nazwa użytkownika łańcucha, wartość uwierzytelniania). Teraz otrzymuję nazwę użytkownika poprawnie, ale wartość jest nadal obiektem uwierzytelniania z wszystkimi wartościami pustymi dla członków. Procedura obsługi Post jest kodowana tak, jak ją wysłałeś (ale nazywa się Post), a także zwraca wartości null dla członków obiektu Uwierzytelniania. – Dan