WCF默认绑定配置设置未在主机上生效

时间:2014-09-26 16:23:23

标签: .net wcf wcf-binding throttling basichttpbinding

我的WCF服务抛出ProtocolException(403) - Request Entity Too Large。将文件(~100KiB)推送到服务时会发生这种情况。

奇怪的是,这只发生在托管(临时)版本上,而不是本地版本。我的客户端配置是:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="DefaultBindingConfiguration" closeTimeout="01:00:00" openTimeout="01:00:00" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="1000000000" maxBufferPoolSize="1000000000" maxReceivedMessageSize="1000000000">
                <readerQuotas maxDepth="1000000000" maxStringContentLength="1000000000" maxArrayLength="64000000" maxBytesPerRead="1000000000" maxNameTableCharCount="1000000000" />
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    ...
</system.serviceModel>

我的服务器配置是:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding maxBufferSize="1000000000" maxReceivedMessageSize="1000000000" maxBufferPoolSize="1000000000" sendTimeout="01:00:00" receiveTimeout="01:00:00">
                <readerQuotas maxDepth="1000000000" maxStringContentLength="1000000000" maxArrayLength="1000000000" maxBytesPerRead="1000000000" />
                <security mode="None"/>
            </binding>
        </basicHttpBinding>
    </bindings>
    ...
</system.serviceModel>

为简洁起见,我省略了<behaviours>部分。客户端以编程方式创建端点,全部使用DefaultBindingConfiguration。我可以通过选择性地将值减少到1来确认服务器和客户端绑定配置是否在本地生效,并且看到它失败。

为什么托管服务器的行为可能与我的本地服务器不同?显着差异:

  • 本地操作系统:Windows 7,主机操作系统:Windows Server 2012
  • 本地IIS:7,主机IIS 8(.5?)

注意: 要预先排除&#34;这些值过高&#34;并且“没有设定全球价值观”,我知道风险所以不需要提醒。:)

非常感谢任何指示和建议。

更新
这个问题已经解决了。重新启动Web场中的节点后,将不再显示此行为。这并不能让我满怀信心,因为如果它再次发生,我不知道如何解决它。我欢迎答案,这可以说明为什么会出现这种情况......

1 个答案:

答案 0 :(得分:0)

我会检查IIS管理器以查看设置是否不同,但也许您可以在web.config上设置显式请求长度值,更多信息here