2016-12-15 22 views
1

如何读取表单数据Azure的功能?我试着做它在几个方面,但我总是得到一个错误,例如:Azure的功能 - 如何阅读表格数据

using System.Net; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    dynamic data = await req.Content.ReadAsFormDataAsync(); 

    return req.CreateResponse(HttpStatusCode.OK, $" {data}"); 
} 

错误:Exception while executing function: Functions.FormTrigger. System.Net.Http.Formatting: No MediaTypeFormatter is available to read an object of type 'FormDataCollection' from content with media type 'application/json'.

我检查请求的内容和我得到的请求为multipart/form-data

" ------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nsdgs\r\n 
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\" _replyto\"\r\n\r\[email protected]\r\n 
------WebKitFormBoundary47wKq7pk9Fcc4H9J\r\nContent-Disposition: form-data; name=\"message\"\r\n\r\nsdgsd\r\n 
------WebKitFormBoundary47wKq7pk9Fcc4H9J--\r\n" 

谢谢你的提示。

+0

请求内容的类型是什么?也就是说,无论是 - application/x-www-form-urlencoded,还是你有应用程序/ json内容? “ReadAsFormDataAsync”只接受“application/x-www-form-urlencoded”类型的内容。 – Nirman

+0

@Nirman我试了一下,它的工作原理,但总是从表达式中得到空的结果,如:data [“message”] –

+0

您可以尝试阅读 - req.Content.ReadAsFormDataAsync()。这应该会给你名字价值的收集 – Nirman

回答

5

当请求中包含“应用程序/ x-WWW的形式,进行了urlencoded”的内容类型,您需要将输入转化为NameValueCollection中,以读取输入:

NameValueCollection col = req.Content.ReadAsFormDataAsync().Result; 
return req.CreateResponse(HttpStatusCode.OK, $" {col[0]}"); 

您还可以通过密钥字符串而不是索引,这会使代码更具可读性并且不言自明