c# - 无法读取 ASP.NET WebApi Controller 中的 Request.Content

标签 c# asynchronous asp.net-web-api

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

最佳答案

我也为此苦苦挣扎。 ReadAsStringAsyncReadAsAsync 返回任务对象。引用 Result 属性返回内容。它可能引用了 Result 属性导致异步读取请求被阻止。

例子:

string str = response.Content.ReadAsStringAsync().Result;

关于c# - 无法读取 ASP.NET WebApi Controller 中的 Request.Content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127803/

相关文章:

javascript - Node JS动态集合ajax调用异步等待

c# - 使用 JSON.net 将枚举容器序列化为字符串

c# - 生成两个不重复数字的数组

c# - 在不调用 XmlWriter.WriteStartDocument() 的情况下使用 XmlWriter.WriteEndDocument() 是否可行

c# - 如何在 C# 中增加堆栈大小? 1MB 不够。我有 32GB 可用内存

c# - 适用于 LinkedIn 的 C# SDK

javascript - React/Redux : Error: Actions must be plain objects. 使用自定义中间件进行异步操作

c++ - boost::asio::streambuf 通过 https 检索 xml 数据

.net - 公开 DTO 时的 ApiController 与 ODataController

c# - 为外部身份验证创建部分登录 cookie