Ich habe eine Azure-Funktion erstellt, und ich bin es lokal ausgeführt:Azure Funktionen Modell Bindung
[FunctionName("HttpTriggerCSharpSet")]
public static async Task<HttpResponseMessage> Set([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] MyDocument req, TraceWriter log)
{
// ...
}
Beachten Sie, dass MyDocument
der erste Parameter statt HttpRequestMessage
ist. Ich habe in der Dokumentation gelesen, dass dieser Ansatz funktionieren sollte, und er scheint der ASP.NET-Modellbindung sehr ähnlich zu sein (in meinen Augen sowieso). MyDocument
ist ein POCO mit nur 3 Eigenschaften.
public class MyDocument
{
public string Name { get; set; }
public int ShoeSize { get; set; }
public decimal Balance { get; set; }
}
Wenn ich auf die Funktion POST wie so (ich verwende Postman):
Ich erhalte eine Fehlermeldung: [8/8/2017 2:21:07 PM] Exception while executing function: Functions.HttpTriggerCSharpSet. Microsoft.Azure.WebJobs.Host: Exception binding parameter 'req'. System.Net.Http.Formatting: No MediaTypeFormatter is available to read an object of type 'MyDocument' from content
(die Sie auch im Screenshot von Postman sehen oben)
Ich habe versucht, Form-Daten und x-www-Form-urlencoded und sogar roh von Postman, gleichen Fehler jedes Mal. Ich habe auch versucht, zurück zu HttpRequestMessage
und mit req.Content.ReadAsAsync<MyDocument>
, und ich bekomme einen ähnlichen Fehler. Bricht ich meinen POST falsch oder schreibe ich meine Azure-Funktion falsch? In beiden Fällen, was ist der richtige Weg?
es JSON sein muss, die zu einer Azure-Funktion vorgelegt wird? Formular codiert funktioniert nicht? Ist das irgendwo dokumentiert, wo ich es nicht bemerkt habe? –
(es funktioniert, FYI) –