我在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