Azure Functions模型绑定

时间:2017-08-08 14:31:44

标签: c# azure postman azure-functions

我已经创建了一个Azure功能,并且我在本地运行它:

JsonSerializationException: Error getting value from 'ReadTimeout' on 'System.IO.FileStream'.

请注意,[FunctionName("HttpTriggerCSharpSet")] public static async Task<HttpResponseMessage> Set([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] MyDocument req, TraceWriter log) { // ... } 是第一个参数,而不是MyDocument。我在文档中读到了这种方法应该有效,并且它似乎与ASP.NET模型绑定非常相似(无论如何,在我看来)。 HttpRequestMessage是一个只有3个属性的POCO。

MyDocument

当我像这样发布函数时(我使用Postman):

POST with Postman to Azure Function

我收到一条错误消息:public class MyDocument { public string Name { get; set; } public int ShoeSize { get; set; } public decimal Balance { get; set; } } (您也可以在上面邮递员的屏幕截图中看到)

我已经尝试过form-data和x-www-form-urlencoded甚至是Postman的原始版本,每次都是同样的错误。我还尝试切换回[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并使用HttpRequestMessage,我收到了类似的错误。我是否错误地构建了POST,或者我是否错误地编写了Azure函数。在任何一种情况下,什么是正确的方法?

1 个答案:

答案 0 :(得分:5)

确保指定标题:

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

然后以下正文应该适用于您的代码:

<tr>
  <td class="fixnumber">5</td>
  <td class="total"></td>
  <td>
      <div class="form-group">
          <select name="quantity[]" class="form-control quantity">
             <option value="none">select an option</option>
             <option value="2">2</option>
          </select> 
      </div>
  </td>
</tr>


var select = $(".quantity");
select.on("change", function () {
    $(this).change(function(key, value){
        $(this).closest(".total").text(parseInt($(this).closest(".fixnumber").text())*parseInt($(this).val()))
    })
});