我遇到了一个问题,我的场景要求我将可能很大的文件发送到 WCF 数据服务。默认情况下,IIS 的 HTTP 请求似乎有 48k 的限制,但可以通过配置将其更改为更大的值。然而,这是一项防止 DoS 攻击的安全功能。此外,我无法控制部署到的 IIS 服务器,即使安装过程可能能够为此设置初始值。
发送的数据已经压缩并且通常低于 48k,因此可能有点极端情况,但如果用户无法上传他们的数据,他们可能会失去很多工作。
我考虑过以 block 的形式发送数据,但后来我失去了这个功能:
context.SaveChanges(SaveChangesOptions.ReplaceOnUpdate | SaveChangesOptions.Batch)
有什么选择吗? WCF 数据服务不适合这个,还有什么,传统的 web 服务?以上仍然可以使用替代代码但相同的技术来实现吗?我不得不通过服务发送数据。
最佳答案
通过选择使用 WCF 数据服务的 Web.Config 配置 IIS 7,我找到了问题的解决方案。我用了webHttpBinding
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
</webHttpBinding>
</bindings>
.....
值maxReceivedMessageSize以字节表示,默认值为 64KB,以限制拒绝服务攻击的风险 - 将此设置为合理的值。
关于c# - 将 >48k 发送到 WCF 数据服务 (OData) 413 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160227/