我正在 TransferMode.Streamed HttpSelfHostConfiguration exe 中使用 WebApi 编写代理。
当我使用 fiddler 发布到我的 ApiController 时,出于某种原因我无法读取 Request.Content - 即使我有发布的数据它也返回“”
public class ApiProxyController : ApiController
{
public Task<HttpResponseMessage> Post(string path)
{
return Request.Content.ReadAsStringAsync().ContinueWith(s =>
{
var content = new StringContent(s.Result); //s.Result is ""
CopyHeaders(Request.Content.Headers, content.Headers);
return Proxy(path, content);
}).Unwrap();
}
private Task<HttpResponseMessage> Proxy(string path, HttpContent content)
{
...
}
}
这是我的网络请求
POST http://localhost:3001/api/values HTTP/1.1
Host: localhost:3001
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Type: application/json
Content-Length: 26
{ "text":"dfsadfsadfsadf"}
我做错了什么?为什么 s.Result 返回的是空字符串而不是原始 json?
最佳答案
我也为此苦苦挣扎。 ReadAsStringAsync
和 ReadAsAsync
返回任务对象。引用 Result
属性返回内容。它可能引用了 Result 属性导致异步读取请求被阻止。
例子:
string str = response.Content.ReadAsStringAsync().Result;
关于c# - 无法读取 ASP.NET WebApi Controller 中的 Request.Content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127803/