Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 在web.config中更改时,WCF MaxReceivedMessageSize不会更新_Silverlight_Wcf_Wcf Binding_Basichttpbinding - Fatal编程技术网

Silverlight 在web.config中更改时,WCF MaxReceivedMessageSize不会更新

Silverlight 在web.config中更改时,WCF MaxReceivedMessageSize不会更新,silverlight,wcf,wcf-binding,basichttpbinding,Silverlight,Wcf,Wcf Binding,Basichttpbinding,我在网上到处看看,似乎没有一个解决这个问题的办法适合我。我有一个由Silverlight应用程序使用的WCF服务。在我尝试更新大型对象图之前,一切都正常。我的跟踪日志以一个可爱的错误向我致意: 传入邮件65536的最大邮件大小配额已被取消 超过。要增加配额,请使用MaxReceivedMessageSize 属性,该属性位于相应的绑定元素上 我已经更改了web.config文件和Silverlight的ClientConfig文件中的设置,甚至尝试手动创建代理并在代码中设置值 My web.co

我在网上到处看看,似乎没有一个解决这个问题的办法适合我。我有一个由Silverlight应用程序使用的WCF服务。在我尝试更新大型对象图之前,一切都正常。我的跟踪日志以一个可爱的错误向我致意:

传入邮件65536的最大邮件大小配额已被取消 超过。要增加配额,请使用MaxReceivedMessageSize 属性,该属性位于相应的绑定元素上

我已经更改了web.config文件和Silverlight的ClientConfig文件中的设置,甚至尝试手动创建代理并在代码中设置值

My web.config:

  <system.serviceModel>
    <diagnostics>
      <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" />
      <endToEndTracing propagateActivity="true" activityTracing="true"
             messageFlowTracing="true" />
    </diagnostics>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBindingSettings" closeTimeout="00:10:00" openTimeout="00:10:00" sendTimeout="00:10:00" 
                 maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" messageEncoding="Text">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="TestConfigService">
        <endpoint address="" contract="PreferencesUI.Hub.PreferenceSVC.ITestConfig" binding="basicHttpBinding"
                  bindingConfiguration="basicHttpBindingSettings" />
      </service>
    </services>
  </system.serviceModel>

有人看到我错过了什么吗?我在网上找到的所有东西都指出,有人忘记设置maxReceivedMessageSize,或者忘记给端点一个bindingConfiguration名称值,这两项我都做过。我讨厌WCF的这一方面。理解起来不必要的复杂,而且很难做到正确

我并不表示完全理解,但我知道除了绑定之外,还可以在其他地方设置MaxReceivedMessageSize属性。还可以尝试底层传输,如下所示:

    <binding name="CustomBinding_IRoomService">
      <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
    </binding>

也许还有其他地方

basicHttpBinding没有httpProtocol元素。将其更改为customBinding以访问该配置元素,但仍然没有骰子。谢谢你的建议。
    <binding name="CustomBinding_IRoomService">
      <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
    </binding>
private void AddNetTcpEndpoint()
{
    var binaryMessageEncodingTcp = new BinaryMessageEncodingBindingElement
    {
        MaxSessionSize = ushort.MaxValue
    };
    binaryMessageEncodingTcp.ReaderQuotas.MaxDepth = ushort.MaxValue;
    var tcpDuplexBinding = new CustomBinding(
        binaryMessageEncodingTcp,
        new TcpTransportBindingElement {MaxReceivedMessageSize = int.MaxValue, MaxBufferSize = int.MaxValue}
        );
    tcpDuplexBinding.SendTimeout = TimeSpan.FromMinutes(2);
    tcpDuplexBinding.ReceiveTimeout = TimeSpan.FromMinutes(30);
    tcpDuplexBinding.OpenTimeout = TimeSpan.FromSeconds(30);
    tcpDuplexBinding.CloseTimeout = TimeSpan.FromSeconds(30);

    AddServiceEndpoint(
        typeof (IRoomService),
        tcpDuplexBinding,
        "tcpDuplex").Behaviors.Add(new SilverlightFaultBehavior());
        }
}