如何修改Web API应用程序的默认允许响应大小设置?

时间:2013-05-08 09:00:48

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

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

public HttpResponseMessage GetEvents()
{
...
}

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

响应大小可能像30MB。

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

如何修改默认设置?

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

我应该压缩回复吗?

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

由于

2 个答案:

答案 0 :(得分:13)

我不确定你的问题。因为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响应时要小心你的代码。

答案 1 :(得分:7)

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

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