我用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>
https://stackoverflow.com/questions/10122957
复制相似问题