• C# WCF WinCE 解决方案 错误提示之:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性


    网上的解决方案:

    出现这种错误,先去修改服务器端和客户端的MaxReceivedMessageSize值,如果还报错那么查看你的代码调用了是不是new了一个新的BasicHttpBinding对象,如果是new了新的那么你的webconfig根本就没有被调用,在new的时候要将 <binding name="DataSyncService" 中的name值作为参数传进去,或者是在代码里重新设置MaxReceivedMessageSize值

    第一种

    DataSyncServiceClient service = new DataSyncServiceClient(new BasicHttpBinding("DataSyncService"), new EndpointAddress(new Uri(con)));

    第二种

    DataSyncServiceClient service = new DataSyncServiceClient(new BasicHttpBinding(), new EndpointAddress(new Uri(con)));

    (service.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
    (service.Endpoint.Binding as BasicHttpBinding).MaxBufferPoolSize = int.MaxValue;
    (service.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;

    我自己项目中的问题:

                    //SMC.Binding binding = U8ServiceClient.CreateDefaultBinding();
                    //string remoteAddress = U8ServiceClient.EndpointAddress.Uri.ToString();
                    //EndpointAddress endpoint = new EndpointAddress(remoteAddress);
                    //U8Client = new U8ServiceClient(binding, endpoint);
                    //SessionID = U8Client.StartSession();

    我们之前是用上面的这个方法来的:即使我在服务器端设置了:

     maxReceivedMessageSize="2147483647"

    <dataContractSerializer maxItemsInObjectGraph="2147483647" />

    也还是不起作用。

    <?xml version="1.0"?>
    <configuration>
        <system.web>
            <compilation debug="true" targetFramework="4.0">
                <assemblies>
                    <add assembly="Interop.U8Login, Version=1.14.0.0, Culture=neutral, PublicKeyToken=79A4E7AD54EEABCA"/></assemblies></compilation>
        <customErrors mode="Off"/>
      </system.web>
        <appSettings>
            <add key="defaultConnection" value="sqlCon"/>
            <add key="DALAssemblyName" value="HZYA.DALSQLServer"/>
            <add key="DALFactoryType" value="HZYA.DALSQLServer.DALMSSqlFactory"/>
        <add key="SessionTimeOut" value="00:30:00"/>
        </appSettings>
        <connectionStrings>
            <!--<add name="sqlCon" connectionString="Data Source=CQY-PC\SQLEXPRESS2005;Initial Catalog=UFDATA_001_2010;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
            <add name="System" connectionString="Data Source=CQY-PC\SQLEXPRESS2005;Initial Catalog=UFSysTem;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
            <add name="Barcode" connectionString="Data Source=CQY-PC\SQLEXPRESS2005;Initial Catalog=Barcode;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>-->
        <add name="sqlCon" connectionString="Data Source=wuyf\sql2005;Initial Catalog=UFDATA_001_2012;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
        <add name="System" connectionString="Data Source=wuyf\sql2005;Initial Catalog=UFSysTem;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
        <add name="Barcode" connectionString="Data Source=wuyf\sql2005;Initial Catalog=Barcode;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
        </connectionStrings>
        <system.serviceModel>
            <services>
                <service name="CommonService" behaviorConfiguration="ServiceBehavior">
                    <endpoint address="" binding="wsHttpBinding" contract="ICommonService" bindingConfiguration="LargeSizeWsHttpBinding"/>
                    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
                    <endpoint address="basic" binding="basicHttpBinding" contract="ICommonService" bindingConfiguration="LargeSizeBasicHttpBinding"/>
                </service>
                <service name="BarcodeService" behaviorConfiguration="ServiceBehavior">
                    <endpoint address="" binding="wsHttpBinding" contract="IBarcodeService"/>
                    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
                    <endpoint address="basic" binding="basicHttpBinding" contract="IBarcodeService"/>
                </service>
                <service name="PrintService" behaviorConfiguration="ServiceBehavior">
                    <endpoint address="" binding="wsHttpBinding" contract="IPrintService"/>
                    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
                    <endpoint address="basic" binding="basicHttpBinding" contract="IPrintService"/>
                </service>
          <service name="LoginService" behaviorConfiguration="ServiceBehavior" >
            <!--<endpoint address="" binding="wsHttpBinding" contract="ILoginService" bindingConfiguration="NoneSecurity" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>-->
            <endpoint address="basic" binding="basicHttpBinding" contract="ILoginService"/>
          </service>
          <service name="U8Service" behaviorConfiguration="ServiceBehavior" >
            <endpoint address="" binding="wsHttpBinding" contract="IU8Service" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            <endpoint address="basic" binding="basicHttpBinding" contract="IU8Service"/>
          </service>
          <!--<service name="U8Service" behaviorConfiguration="ServiceBehavior" >
            <endpoint address="" binding="wsHttpBinding" contract="ILoginService" bindingConfiguration="NoneSecurity" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            <endpoint address="basic" binding="basicHttpBinding" contract="IU8Service"/>
          </service>-->
            </services>
            <bindings>
                <basicHttpBinding>
                    <binding name="LargeSizeBasicHttpBinding" maxBufferPoolSize="2147483647" receiveTimeout="00:00:10" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
                        <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
                    </binding>
                </basicHttpBinding>
                <wsHttpBinding>
            <binding name="LargeSizeWsHttpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
                        <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
                    </binding>
            <binding name="NoneSecurity" receiveTimeout="00:00:50" maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false">
              <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/>
              <reliableSession enabled="true"/>
              <security mode="None">
                <message establishSecurityContext="true"/>
              </security>
            </binding>
          </wsHttpBinding>
            </bindings>
            <behaviors>
                <serviceBehaviors>
                    <behavior name="ServiceBehavior">
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="true"/>
              <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                    </behavior>
                    <behavior name="">
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="false"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>
            <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
        <system.webServer>
            <directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate"/>
        </system.webServer>
    </configuration>

     直到看到网上的这篇文章后,我修改了我的客户端 binding 类型为 basehttpbinding  后,才解决了。

    代码如下:

                    BasicHttpBinding binding = new BasicHttpBinding();
                    binding.MaxReceivedMessageSize = int.MaxValue;
                    binding.MaxBufferPoolSize = int.MaxValue;
                    binding.MaxBufferSize = int.MaxValue;
                    string remoteAddress = U8ServiceClient.EndpointAddress.Uri.ToString();
                    EndpointAddress endpoint = new EndpointAddress(remoteAddress);
                    U8Client = new U8ServiceClient(binding, endpoint);
  • 相关阅读:
    Typora的使用-规整笔记 让我以后的笔记内容更加整齐
    2019.11.8
    Java笔记1: 输入输出与变量常量
    2019.11.5 规整博客;整理分类;分章节发表博客
    2019.11.4 准备房子/研究汉诺塔问题和递归改变自我思维
    2013年小结
    legoblock秀上限
    阶段总结合计划
    《人月神话》读后感
    《JavaScript语言精髓与编程实践》读书笔记二
  • 原文地址:https://www.cnblogs.com/wuyifu/p/2790824.html
Copyright © 2020-2023  润新知