调试Http Trigger Azure功能VS 2017

时间:2017-10-09 06:18:25

标签: c# function azure

我安装了Visual Studio 2017 15.3并安装了Azure Development工作负载。

我根据这篇文章创建了一个空白HttpTrigger

http://www.c-sharpcorner.com/article/getting-started-with-microsoft-azure-functions-using-visual-studio-2017/

如果我使用Name作为参数查询字符串,我可以成功调试。

但是,如果我使用Postman创建此Post请求:

{
    "name": "Azure"
}

我收到以下错误:

  

“mscorlib:执行函数时出现异常:HttpTrigger   。匿名托管DynamicMethods程序集:'Newtonsoft.Json.Linq.JObject'doe   s不包含'name'的定义。“

以下是Visual Studio 2017中函数应用程序的代码:

using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;

namespace VS2017TestFunctionApp
{
    public static class HttpTrigger
    {
        [FunctionName("HttpTrigger")]
        public static async Task<HttpResponseMessage> 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);
        }
    }
}

另外,如果我在Run函数中复制完全相同的代码并通过Azure门户在功能应用程序中使用相同的测试帖,那么一切正常。

enter image description here

1 个答案:

答案 0 :(得分:0)

我使用您的代码创建一个Azure功能应用程序,并使用Postman发送请求,这对我来说很好。

请求和响应

enter image description here

请求正文:

enter image description here

获取请求正文的断点可按预期命中

enter image description here

编辑:

我可以从name中提取data而不会出现任何错误。

enter image description here