Azure功能发布问题

时间:2017-12-02 08:00:41

标签: azure azure-functions

嗨,我是Azure功能的新手,我正在使用VS 2017 15.4并在本地运行helloworld功能应用程序。我能够得到关于这个功能的请求但是当我在同一个uri上执行帖子时它会给出。

mscorlib:执行函数时出现异常:HelloWorld。 System.Net.Http.Formatting:没有MediaTypeFormatter可用于从媒体类型为“application / octet-stream”的内容中读取“Object”类型的对象。

你能告诉我忘记粗线在发布请求中给出了什么问题,我尝试使用contentType而没有ContentType;身体和没有身体。

如何在azure函数中解析请求体中的Json对象。我可能的一种方法是在字符串中解析它然后使用jsonconvert反序列化。他们是更好的方式,比如valueproviders modelbinders等。

[FunctionName("HelloWorld")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");

        // parse query parameter
        string name = req.GetQueryNameValuePairs()
            .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
            .Value;

        // Get request body
        *dynamic data = await req.Content.ReadAsAsync<object>();*

        // Set name to query string or body data
        name = name ?? data?.name;

        return name == null
            ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
            : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
    }.

2 个答案:

答案 0 :(得分:0)

假设您的HTTP请求上的Content-Type标头设置为application/json,这应该可以正常工作。

请注意,如果标头的值为multipart/form-data,那么这是一个记录为here的已知错误。

答案 1 :(得分:0)

正如Connor所说,只要您的请求中Content-Type标头设置为application/json,此代码就能正常运行。我遇到的一个问题是,在天蓝色门户中测试azure函数时添加头功能在这种情况下似乎不起作用。

如果您可以从天蓝色功能的测试部分之外向您的功能发送请求,这应该可以正常工作。