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

The*_*ght 14 c# asp.net iis asp.net-mvc asp.net-web-api

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

public HttpResponseMessage GetEvents()
{
...
}
Run Code Online (Sandbox Code Playgroud)

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

响应大小可能像30MB.

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

如何修改默认设置?

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

我应该压缩回复吗?

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

谢谢

Toa*_* Vo 13

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

1.请求获得限制: 要解决此问题,您应该增加请求大小,以便可以获得大规模响应.要增加请求大小,请web.config按以下方式添加:

<system.web>
<httpRuntime maxRequestLength="2147483647" />
Run Code Online (Sandbox Code Playgroud)

2.您的响应缓冲区大小是限制异常:

请按照MSDN 的链接.

编辑:

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

响应大小将根据我们放入其中的消息大小自动获取大小.它对响应大小有限制.该HttpReponseMessage实际上是我在上面张贴类似的响应.

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

你应该采取链接.处理数据的最佳实践是转换为二进制数据并将其转移为许多小部件.

我应该压缩回复吗?

取决于您的背景.IIS 7.0已经允许您配置zip响应,但在客户端已经支持zip响应时要小心你的代码.

  • 它们是相同的,Web Api HttpResponseMessage只是对HTTP响应的包装。 (2认同)

sha*_*rif 7

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

    <configuration> 
       <system.web.extensions>
           <scripting>
               <webServices>
                   <jsonSerialization maxJsonLength="50000000"/>
               </webServices>
           </scripting>
       </system.web.extensions>
    </configuration> 
Run Code Online (Sandbox Code Playgroud)