已超出传入邮件的最大邮件大小配额(明显的修复没有帮助)

pja*_*cko 6 wcf iis-7 nettcpbinding

我有一个应用程序,它使用带有netTcpBinding的WCF上传大文件.对于特定文件,我收到错误消息:

已超出传入邮件的最大邮件大小限额(65536).要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性.

这是我对客户端web.config文件的绑定(客户端是一个ASP.NET网站):

    <binding name="DataImportEndpoint" closeTimeout="00:20:00" openTimeout="00:01:00"
      receiveTimeout="00:20:00" sendTimeout="00:20:00" transferMode="Buffered"
      hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
      maxBufferSize="5242880" maxReceivedMessageSize="5242880">
      <readerQuotas maxDepth="32" maxStringContentLength="524288" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="Transport">
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
      </security>
    </binding>
Run Code Online (Sandbox Code Playgroud)

我意识到我还需要更改服务配置的maxReceivedMessageSize属性.所以我添加了这个绑定:

<bindings>
  <netTcpBinding>
    <binding name="NetTcpLarge"
             maxReceivedMessageSize="5242880" maxBufferSize="5242880">
      <readerQuotas maxStringContentLength="524288"/>
    </binding>
  </netTcpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

并修改了我的端点:

<endpoint address="DataImportService" binding="netTcpBinding"
       name="DataImportEndpoint" bindingConfiguration="NetTcpLarge"
       contract="IDataImportService" />
Run Code Online (Sandbox Code Playgroud)

这解决了我在Visual Studio中运行自托管时的问题.但是在IIS 7上运行的实例上,我仍然遇到超出65536的错误.我错过了什么吗?我甚至将它添加到IIS 7实例中的服务配置中,但无济于事:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="5242880" />
        </requestFiltering>
    </security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 6

如果异常与IIS仍然相同,则与此无关<requestLimits>,异常明确表示maxReceivedMessageSize已超出.我将以详细级别捕获WCF跟踪,并检查端点上应用的绑定配置.

我建议你重新检查客户端和服务配置,如果仍然没有线索,请在详细级别捕获服务和客户端的跟踪.

  • 实际上,绑定配置尚未应用.来自web.config的服务名称与.svc文件中的服务名称(一个具有完整名称空间)不匹配,因此,正在应用默认端点!谢谢你的建议 (2认同)