Ich bin ein Web-API-Neuling einen RESTful Web Service Api in .Net zu schreiben 4. Ich habe einen Controller für eine Klasse konfigurierte I Authentication
nenne. Das Problem, das ich habe, ist, dass, wenn ich JSON-Daten zum Web-API-Dienst posten oder setzen, meine Handler in der Steuerung aufgerufen werden, aber die Parameterobjekte NULL-Daten enthalten. Ich kann erfolgreich Daten erhalten, aber Post und Put kommen mit leeren Parameterobjekten..NET 4 Web API NULL-Daten in Parametern empfangen
Ich habe von einer Client-Anwendung und Fiddler getestet, und ich bekomme das gleiche Ergebnis. Hier ist das, was ich sende von Fiedler:
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"}
Wenn ich einen Haltepunkt in den Put-Handler in dem Authentication-Controller gesetzt:
public void Put(string IDstring, Authentication value)
{
}
ich folgend in den Uhren Fenster:
IDstring null string
value {bbsRESTResources.Authentication} bbsRESTResources.Authentication
hashvalue null string
password null string
username null string
meine Authentifizierungs Klasse sieht wie folgt aus:
namespace bbsRESTResources
{
public class Authentication
{
public string username;
public string password;
public string hashvalue;
}
}
meine Strecke sieht wie folgt aus:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Bitte beziehen Sie sich nicht mit, ob dies eine gute Möglichkeit, die Authentifizierung zu behandeln. Dies ist nur ein erster Durchlauf beim Testen meiner Anwendung von Ende zu Ende. Ich habe nach anderen Leuten gesucht, die dieses Problem haben, und habe keine gefunden.
Ich bereinigte meine Route, um {username} zu senden und änderte die Methodendeklaration in: public void Put (string username, Authentication value). Jetzt bekomme ich den Benutzernamen korrekt, aber der Wert ist immer noch ein Authentifizierungsobjekt mit allen Nullwerten für die Mitglieder. Der Post-Handler ist so codiert, wie Sie ihn veröffentlicht haben (aber Post genannt), und gibt auch Nullen für die Mitglieder des Authentication-Objekts zurück. – Dan