15

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

public HttpResponseMessage GetEvents()
{
...
}

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

响应大小可能是 30MB。

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

如何修改默认设置?

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

我应该压缩响应吗?

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

谢谢

4

2 回答 2

14

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

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

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

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

请按照 MSDN 的链接

编辑:

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

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

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

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

我应该压缩响应吗?

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

于 2013-05-08T09:09:11.707 回答
9

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

    <configuration> 
       <system.web.extensions>
           <scripting>
               <webServices>
                   <jsonSerialization maxJsonLength="50000000"/>
               </webServices>
           </scripting>
       </system.web.extensions>
    </configuration> 
于 2015-12-05T19:36:32.057 回答