【问题标题】:How to modify the default allowed response size settings for a Web API Application?如何修改 Web API 应用程序的默认允许响应大小设置?
【发布时间】:2013-05-08 09:00:48
【问题描述】:

我有一个返回事件列表的 Web API 方法:

public HttpResponseMessage GetEvents()
{
...
}

我的服务支持使用 DataContractSerializer(用于 xml)和 DataContractJsonSerializer(用于 JSON)的 Xml 和 JSON 响应。

响应大小可能是 30MB。

在 IIS 中托管的 ASP.NET Web API 中默认允许的响应大小是多少?

如何修改默认设置?

返回如此大的数据(虽然不是那么大)的最佳做法是什么?

我应该压缩响应吗?

此外,我们每秒可能会收到一个请求。

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc iis asp.net-web-api


    【解决方案1】:

    我不确定您的问题。因为Response 没有限制大小。我们可以通过在响应头中添加更多参数Content-Length 来限制响应大小。所以我假设你会遇到以下两个问题:

    1.请求受到限制: 要解决它,您应该增加请求大小以使其可以接收大尺寸响应。 要增加您在web.config 中输入的请求大小,如下所示:

    <system.web>
    <httpRuntime maxRequestLength="2147483647" />
    

    2。你得到的响应缓冲区大小是限制异常:

    请关注来自 MSDN 的link

    编辑:

    托管在 ASP.NET Web API 中的默认允许响应大小是多少 IIS?

    响应大小将根据我们放入其中的消息大小自动获取大小。并且它对响应大小有限制。 HttpReponseMessage 实际上是我在上面发布的类似回复。

    返回如此大的数据的最佳做法是什么(虽然不是 这么大)?

    你应该选择link。处理数据的最佳实践是将其转换为二进制数据并尽可能多地传输它。

    我应该压缩响应吗?

    取决于您的上下文。 IIS 7.0 已经允许您配置 zip 响应,但请注意您的客户端代码是否已经支持 zip 响应。

    【讨论】:

    • 我的问题是关于 ASP.NET MVC Web API 服务中的响应大小。
    • 该链接适用于具有 4MB 缓冲区限制的 ASP 页面。我认为相同的设置不应该应用于 Web API?
    • 它们是一样的,Web Api HttpResponseMessage 只是对 http Response 的封装。
    【解决方案2】:

    在您的 web.config 中尝试此代码 它解决了我的问题

        <configuration> 
           <system.web.extensions>
               <scripting>
                   <webServices>
                       <jsonSerialization maxJsonLength="50000000"/>
                   </webServices>
               </scripting>
           </system.web.extensions>
        </configuration> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多