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

C# 如何修改Web API应用程序的默认允许响应大小设置?,c#,asp.net,asp.net-mvc,iis,asp.net-web-api,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中默认允许的响应大小是多少 如何修改默认设置 返回如此大的数据(虽然不是那么大)的最佳实践是什么 我该不该闭嘴回答 此外,

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

public HttpResponseMessage GetEvents()
{
...
}
我的服务使用DataContractSerializer(用于Xml)和DataContractJsonSerializer(用于JSON)支持Xml和JSON响应

响应大小可能类似于30MB

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

如何修改默认设置

返回如此大的数据(虽然不是那么大)的最佳实践是什么

我该不该闭嘴回答

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


谢谢

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

<system.web>
<httpRuntime maxRequestLength="2147483647" />
1。请求获得限制: 要解决此问题,您应该增加请求大小,以确保它可以接收到较大的响应。 要增加放入
web.config
的请求大小,请如下所示:

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

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

请按照MSDN中的说明进行操作

编辑:

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

响应大小将根据我们放入其中的消息大小自动获取大小。而且它在响应大小方面也有局限性。
HttpReponseMessage
实际上是一个类似于我上面发布的响应

返回如此大的数据(尽管不是这样)的最佳实践是什么 那么大

你应该采取行动。处理数据的最佳实践是将数据转换为二进制数据,并将其作为许多小部分进行传输

我该不该闭嘴回答


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

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

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


我的问题是关于ASP.NET MVC Web API服务中的响应大小。该链接适用于具有4MB缓冲区限制的ASP页面。我不认为相同的设置应该应用于Web API?它们是相同的,Web API HttpResponseMessage只是http响应的包装器。