我用IIS4.0编写了一个.NET服务,它托管在我的Windows7 x64
旗舰版系统和IIS7.5上。其中一个服务方法有一个'object‘作为参数,我试图发送一个包含图片的byte[]。只要这张图片的文件大小小于大约。48KB,一切顺利。但是如果我试图上传更大的图片,WCF服务会返回一个错误:(413) Request Entity Too Large.
,所以我花了3个小时在谷歌上搜索错误消息,我看到的关于这个主题的每个主题都建议提高'uploadReadAheadSize‘属性。因此,我所做的是使用以下命令(10485760 = 10MB):
"appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize: 10485760 /commit:apphost"
"cscript adsutil.vbs set w3svc/<APP_ID>/uploadreadaheadsize 10485760"
我还使用了IIS管理器来设置该值,方法是打开站点并转到“管理”下的“配置编辑器”。不幸的是,我仍然得到了请求实体太大的错误,这真的很令人沮丧!
那么有谁知道我还可以尝试修复这个错误吗?
发布于 2012-04-12 20:39:33
这不是IIS的问题,而是WCF的问题。WCF默认将消息大小限制为65KB,以避免大消息的拒绝服务攻击。另外,如果您不使用MTOM,它会将byte[]发送到base64编码的字符串(大小增加33%) => 48KB * 1,33 = 64KB
要解决此问题,您必须重新配置您的服务以接受更大的消息。此问题之前触发了400错误请求错误,但在更新的版本中,WCF开始使用413,这是此类错误的正确状态代码。
您需要在绑定中设置maxReceivedMessageSize
。您可能还需要设置readerQuotas
。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxReceivedMessageSize="10485760">
<readerQuotas ... />
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
发布于 2013-06-08 02:30:44
我在使用WCF REST服务的IIS 7.5时也遇到了同样的问题。试图通过POST上传超过65k的任何文件,它将返回错误413“请求实体太大”。
您需要了解的第一件事是在web.config中配置了哪种绑定。这里有一篇很棒的文章。
BasicHttpBinding vs WsHttpBinding vs WebHttpBinding
如果你有一个REST服务,那么你需要将它配置为"webHttpBinding“。修复方法如下:
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647" transferMode="Streamed">
</binding>
</webHttpBinding>
</bindings>
发布于 2014-04-04 01:51:14
这帮助我解决了这个问题(为了可读性/可复制性,用一行分隔):
C:\Windows\System32\inetsrv\appcmd set config "YOUR_WEBSITE_NAME"
-section:system.webServer/serverRuntime /uploadReadAheadSize:"2147483647"
/commit:apphost
https://stackoverflow.com/questions/10122957
复制相似问题