2017-07-16 1 views
1

In der neuesten Version von Azure Funktionen Ich bin nicht in der Lage, eine Funktion zu erhalten, in ein Objekt auf dem Weg zu deserialisierenAzure Funktion nicht Deserialisieren Objekt

Versionen.

Azure Funktionen Core Tools: 1.0 0,0-beta.100

Funktion Runtime Version: 1.0.11015.0

Visu al Studio: 15.3.0 Vorschau 4.0

Beispiel (nicht funktioniert):

[FunctionName("Login")] 
public static async Task<HttpResponseMessage> Login([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, ILogger log, AuthenticatingUser user) 
{ 
    return await Task.Run(() => 
    { 
     return req.CreateResponse(HttpStatusCode.OK, user.Username); 
    }); 
} 

Bei dem Versuch, Postman zu verwenden, um diese Funktion zu schreiben, habe ich immer folgende Fehlermeldung:

Exception while executing function: Functions.Login. Microsoft.Azure.WebJobs.Host: Exception binding parameter 'user'. Microsoft.Azure.WebJobs.Host: No value was provided for parameter 'user'.

Ich habe versucht, mit Formulardaten, x-www-form-urlencoded und rohen (mit JSON ausgewählt - was ich erwartet, um zu arbeiten). Alle enden mit demselben Fehler.

Wenn ich den Benutzer aus der Funktion herausnehmen, kann ich die JSON Zugriff über übergeben werden:

var content = req.Content; 
string jsonContent = content.ReadAsStringAsync().Result; 

In früheren Versionen von Azure-Funktionen (bemerkenswerte nicht gebaut, um die Visual Studio-Erweiterung verwenden, beinhaltet JSON-Dateien, usw.) das hat wie erwartet funktioniert.

ich verschiedene Versionen der folgenden bin Entsendung:

{ 
    "Username": "myUserName", 
    "Password": "MyPassword123" 
} 

Modell für den Anwender:

public static async Task<HttpResponseMessage> Login(
    HttpRequestMessage req, 
    [HttpTrigger(AuthorizationLevel.Function, "post")] AuthenticatingUser user) 

req:

public class AuthenticatingUser 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

Antwort

3

Sie sollten user Parameter mit HttpTrigger Attribut markieren wird immer noch ohne irgendwelche bevölkert sein Tribut darauf.

Stellen Sie sicher, dass der Header Ihrer Anfrage auf application/json eingestellt ist. In Anbetracht dessen wird die Funktion mit Ihrem JSON im Anfragetext funktionieren.

+0

Peinlicher Fehler meinerseits. Arbeitete einwandfrei - danke. – Matt

Verwandte Themen