我在TransferMode.Streamed HttpSelfHostConfiguration EXE使用的WebAPI写一个代理读取Request.Content。不能在ASP.NET的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)
{
...
}
}
这里是我的web请求
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的形式返回?
MSDN指示MessageHandlers应该用于横切关注。对于构建代理,标准的MVC控制器应该工作正常。 – arviman 2014-06-23 10:28:25
如果您正在构建流式代理服务器,则不适用。 – mcintyre321 2014-06-23 10:34:32
我的意思是,在转发给代理之前,您可以使用阻止的想法,直到您获得JeffR建议的结果。 (我现在正在构建类似的东西,而且工作起来很棒)。 – arviman 2014-06-23 10:41:06