嗨,我是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);
}.
答案 0 :(得分:0)
假设您的HTTP请求上的Content-Type
标头设置为application/json
,这应该可以正常工作。
请注意,如果标头的值为multipart/form-data
,那么这是一个记录为here的已知错误。
答案 1 :(得分:0)
正如Connor所说,只要您的请求中Content-Type
标头设置为application/json
,此代码就能正常运行。我遇到的一个问题是,在天蓝色门户中测试azure函数时添加头功能在这种情况下似乎不起作用。
如果您可以从天蓝色功能的测试部分之外向您的功能发送请求,这应该可以正常工作。