代码之家  ›  专栏  ›  技术社区  ›  John Farrell

无法覆盖默认WCF配置

wcf
  •  1
  • John Farrell  · 技术社区  · 14 年前

    我正在使用现有的服务,无法解决为什么它不使用自定义配置。

    我的服务课是这样的:

    [ServiceBehavior(Name = "MagicService",Namespace = Namespaces.NS_Magic_ADMIN_SERVICE, ConfigurationName = "MagicServiceConfiguration")]
    public class MagicService : IMagicService
    

    服务配置:

      <service name="MagicServiceConfiguration" behaviorConfiguration="MagicServiceBehavior">
        <endpoint address="" 
            name="httpAdminServiceSEP" 
            binding="basicHttpBinding" 
            bindingName="basicMemberBinding" 
            bindingNamespace="http://magic-service.me.com/admin/2010/04/" 
            contract="Me.Manager.Magic.Contracts.Behavior.IMagicService">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    

    结合:

      <basicHttpBinding>
        <binding name="basicMemberBinding"
    
               receiveTimeout="00:10:00"
               sendTimeout="00:10:00"
               openTimeout="00:10:00"
               closeTimeout="00:10:00"
               maxReceivedMessageSize="2147483647"
               maxBufferSize="2147483647"
               maxBufferPoolSize="2147483647">
        </binding>
      </basicHttpBinding>
    

    我一直在说:“反序列化System.String类型的对象时出错。在读取XML数据时,已经超出了最大字符串内容长度配额(8192)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性来增加此配额。81号线,位置80“

    每当我添加服务引用时,它会自动添加使用默认的8196长度。

    如果删除服务配置,则不会有任何更改。仍然抛出长度异常。

    1 回复  |  直到 14 年前
        1
  •  1
  •   marc_s    14 年前

    您需要使用 bindingConfiguration= 你的属性 <endpoint> -不是那个 bindingName= 一:

    <service name="MagicServiceConfiguration" behaviorConfiguration="MagicServiceBehavior">
      <endpoint 
        name="httpAdminServiceSEP" 
        address="" 
        binding="basicHttpBinding" 
        bindingConfiguration="basicMemberBinding"  *** here use bindingConfiguration!! 
        bindingNamespace="http://magic-service.me.com/admin/2010/04/" 
        contract="Me.Manager.Magic.Contracts.Behavior.IMagicService">
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>