我安装了Visual Studio 2017 15.3并安装了Azure Development工作负载。
我根据这篇文章创建了一个空白HttpTrigger
:
如果我使用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门户在功能应用程序中使用相同的测试帖,那么一切正常。