【问题标题】:WCF MaxReceivedMessageSize property not takingWCF MaxReceivedMessageSize 属性未占用
【发布时间】:2010-04-02 23:33:39
【问题描述】:

没有运气搜索...

我一直在努力

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

这是有道理的,所以我进入服务器和客户端配置并进行更改:

客户

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IFileUpload"
           closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transferMode="Streamed" messageEncoding="Text" maxBufferSize="65536" maxReceivedMessageSize="67108864">
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost/services/FileUpload.svc"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileUpload"
          contract="CFTW.FileUpload.IFileUpload" name="BasicHttpBinding_IFileUpload" />
    </client>
  </system.serviceModel>

服务器

    <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IFileUpload"

                 transferMode="Streamed" messageEncoding="Text" maxBufferSize="67108864" maxBufferPoolSize="67108864" maxReceivedMessageSize="67108864">

        </binding>
      </basicHttpBinding>

    </bindings>
    <services>
      <service name="BasicHttpBinding_IFileUpload">
        <endpoint address="~/services/FileUpload.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileUpload"
            contract="CFTW.FileUpload.IFileUpload"></endpoint>
      </service>

    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

我不确定它为什么不起作用(否则我会修复它:))。它在 .NET 4.0 RC 上运行。

【问题讨论】:

  • 如果您尝试上传文件(正如您的行为名称所表明的那样),我会检查 WCF 流,而不是仅仅增加 maxreceivedmessagesize 参数......
  • 嗯...我以为我在做 WCF 流。我以为这就是 trasferMode="Streamed" 的用途?

标签: wcf exception maxreceivedmessagesize


【解决方案1】:

我刚刚遇到了这个问题。我发现我的自定义绑定根本没有得到应用。然后我在绑定标签中使用了name = ""。然后一切都开始使用新设置。这是由于 .NET 4.0 带有默认的绑定/端点/行为配置。这些默认设置有name = ""。我刚刚修改了默认绑定本身。未应用我的自定义绑定(命名)的原因是 &lt;service&gt; 标记中的名称值。它应该遵循&lt;Namespace.ServiceClassName&gt;

【讨论】:

  • 您将哪个绑定名称设置为“”?在客户端配置中?
【解决方案2】:

您需要在客户端配置中增加属性maxReceivedMessageSize 进行绑定。此外,请务必为maxBufferSize 设置相同的值。对于缓冲连接,这两个值必须相同。

【讨论】:

    【解决方案3】:

    有同样的问题,幸运的是在第二个项目中,可以与工作项目进行比较。不同之处在于工作项目在 web.config 中为服务绑定设置了其他属性...

    工作样本: httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"

    第二个项目只有: https传输

    同时在您的项目中搜索 65536,因为它也在服务参考的 configuration.svcinfo 和 configuration91.svcinfo 中定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2023-03-22
      • 2010-11-23
      • 2012-04-15
      • 2013-09-21
      • 2023-03-16
      相关资源
      最近更新 更多