2017-08-08 7 views
2

を結合私はAzureの機能を作成しましたし、私はそれをローカルに実行している:MyDocumentではなくHttpRequestMessageの最初のパラメータであることをAzureの機能モデルが

[FunctionName("HttpTriggerCSharpSet")] 
public static async Task<HttpResponseMessage> Set([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] MyDocument req, TraceWriter log) 
{ 
    // ... 
} 

注意してください。私は、このアプローチがうまくいくはずであることをドキュメントで読んだことがあります。それはASP.NETモデルのバインディングと非常によく似ています(私の考えでは、とにかく)。 MyDocumentはわずか3つのプロパティを持つPOCOです。

public class MyDocument 
{ 
    public string Name { get; set; } 
    public int ShoeSize { get; set; } 
    public decimal Balance { get; set; } 
} 

私は(私はポストマンを使用しています)のような関数にポスト:

POST with Postman to Azure Function

私は、エラーメッセージが出ます:[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(あなたもポストマンのスクリーンショットで見ることができます上記の)

私はフォームデータとx-www-form-urlencodedを試してみましたが、毎回同じエラーが発生しました。また、HttpRequestMessageに切り替えてreq.Content.ReadAsAsync<MyDocument>を使用してみましたが、同様のエラーが発生します。誤ってPOSTを構築していますか、Azure関数を間違って記述していますか?どちらの場合でも、正しい方法は何ですか?

答えて

5

は、ヘッダを指定してください:

Content-Type: application/json 

次の体はあなたのコードのために働く必要があります。

{ 
    "Name": "myUserName", 
    "Balance": 123.0, 
    "ShoeSize": 30 
} 
+0

それはAzureの機能に提出していますJSONでなければなりませんか?エンコードされたフォームは機能しませんか?それは私が気付かなかったどこかに文書化されていますか? –

+0

(参考、動作します) –

関連する問題