我想從新的Asp.Net Web Api中的請求中提取一些數據。我有一個處理程序設置是這樣的:無法從web api讀取正文數據POST
public class MyTestHandler : DelegatingHandler
{
protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
if (request.Content.IsFormData())
{
request.Content.ReadAsStreamAsync().ContinueWith(x => {
var result = "";
using (var sr = new StreamReader(x.Result))
{
result = sr.ReadToEnd();
}
Console.Write(result);
});
}
return base.SendAsync(request, cancellationToken);
}
}
這是我的http請求:
POST http://127.0.0.1/test HTTP/1.1
Connection: Keep-Alive
Content-Length: 29
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
Host: 127.0.0.1
my_property=my_value
的問題是,無論我如何努力從request.Content
讀取信息,它總是空的。我試過
request.Content.ReadAsStreamAsync
request.Content.ReadAsFormDataAsync
request.Content.ReadAs<FormDataCollection>
以及
[HttpGet,HttpPost]
public string Index([FromBody]string my_property)
{
//my_property == null
return "Test";
}
無它是否工作。我無法從身體中獲取數據。我在Windows 7的IIS內託管並使用Fiddler提交請求。我究竟做錯了什麼?
如果知道類似於wcftestclient.exe的獨立客戶端是否產生類似結果將會有所幫助。 – 2012-08-17 14:31:13
試圖運行,但它不會,因爲它說我的端點沒有任何元數據。 – Micah 2012-08-17 14:43:29
這看起來很奇怪。您是否有理由選擇通過提供的[HttpGet]和[HttpPost]方法進行數據傳輸的方法? – 2012-08-17 14:46:49