(413) 使用 WCF 请求实体太大错误

Posted

技术标签:

【中文标题】(413) 使用 WCF 请求实体太大错误【英文标题】:(413) Request Entity Too Large error with WCF 【发布时间】:2012-11-14 02:02:21 【问题描述】:

我正在尝试构建一个允许用户上传文件的 WCF 服务,文件的最大大小限制为 2mb。我将 byte[] 传递给服务,但不断收到以下错误: System.Net.WebException:远程服务器返回错误:(413)请求实体太大。

我能够发送 1kb 和 10kb 的文件,但是当我尝试 82kb 等较大的文件时,我得到了那个错误。我浏览了一些以前的帖子,但似乎无法找到我做错了什么,我也尝试调整我的配置中的设置,设置最大值以查看是否有帮助,但没有任何效果迄今为止。有人可以看看我有什么,看看我是否遗漏了什么,或者这是与 IIS (7.5) 相关的东西,而不是我的 web.config?

这也不使用 SSL。

WCF 配置:

<services> <service name="DSLDService.DSLDService"> <endpoint binding="basicHttpBinding" bindingConfiguration="" contract="DSLDService.IDocument" /> </service> </services>

Web 应用程序配置:

<endpoint address="http://xxx/DSLDService/DSLDService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDocument" contract="DSLDServiceReference.IDocument" name="" />

<binding name="BasicHttpBinding_IDocument" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" useDefaultWebProxy="true"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" /> </binding>

谢谢。

【问题讨论】:

客户端是否也有相同的 readerQuotas 值? maxReceivedMessageSize not fixing 413: Request Entity Too Large的可能重复 【参考方案1】:

您需要为您的服务和客户端(这就是您现在所拥有的)进行绑定配置,您可以在其中定义最大大小,否则默认为 64 kb。

【讨论】:

我更新了服务中的代码,xxx/DSLDService/DSLDService.svc'。如果两个端点想要共享同一个 ListenUri,它们也必须共享同一个绑定对象实例。两个冲突的端点要么在 AddServiceEndpoint() 调用中指定,要么在配置文件中指定,要么在 AddServiceEndpoint() 和 config 的组合中指定。 很难从您的评论中确切地说出您做了什么,您是否尝试过使用服务配置工具进行更改? msdn.microsoft.com/en-us/library/ms732009.aspx

以上是关于(413) 使用 WCF 请求实体太大错误的主要内容,如果未能解决你的问题,请参考以下文章

具有 30mb 输入字符串的 WCF 服务 - 远程服务器返回错误:(413)请求实体太大

WCF 413 请求实体太大 - 自托管 WebHttpBinding

(413) 请求实体太大 - 在 Azure 上上传 Wcf 时

传递大字节 [] 时 WCF 服务错误 413“实体太大”

WCF(413)请求实体太大

自托管 WCF 服务中的 HTTP 413 请求实体太大