2016-12-15 24 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]}"); 

您還可以通過密鑰字符串而不是索引,這會使代碼更具可讀性並且不言自明