2017-08-08 64 views
2

我創建了一個Azure的功能,我在本地運行它:Azure的功能模型綁定

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

注意MyDocument是第一個參數,而不是HttpRequestMessage。我讀過,這種方法應該工作的文件中,它似乎非常相似,ASP.NET模型綁定(在我的腦海裏,反正)。 MyDocument是POCO只有3個屬性。

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的形式,進行了urlencoded,甚至從郵差,同樣的錯誤每次生。我也試着切換回HttpRequestMessage和使用req.Content.ReadAsAsync<MyDocument>,我也得到了類似的錯誤。我是構建我的帖子有誤,還是我不正確寫我Azure的功能。無論哪種情況,正確的方法是什麼?

回答

5

確保指定頭:

Content-Type: application/json 

那麼下面的機構應爲您的代碼工作:

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

它必須是已提交到Azure的功能JSON?表格編碼不起作用?是否記錄在某處我沒有注意到? –

+0

(它的工作原理,僅供參考) –