C# “听证”;元素';行为';具有无效的子元素“;应忽略,但由于此原因无法更新服务引用

C# “听证”;元素';行为';具有无效的子元素“;应忽略,但由于此原因无法更新服务引用,c#,wcf,silverlight,C#,Wcf,Silverlight,可能重复: 我正在努力实现。(项目在我的机器上运行。) 我收到Visual Studio警告: 元素“behavior”具有无效的子元素“BetterErrorMessageFaults” 其他地方的回答说我应该忽略它,但我不能,因为我无法更新非.Web项目(包含所有xaml文件的项目)中的服务引用。当我尝试时,会出现以下错误: 分析器错误消息:无法加载为扩展名“BetterErrorMessageFaults”注册的类型“MyProject.Web.Services.BetterErrorM

可能重复:

我正在努力实现。(项目在我的机器上运行。)

我收到Visual Studio警告:

元素“behavior”具有无效的子元素“BetterErrorMessageFaults”

其他地方的回答说我应该忽略它,但我不能,因为我无法更新非.Web项目(包含所有xaml文件的项目)中的服务引用。当我尝试时,会出现以下错误:

分析器错误消息:无法加载为扩展名“BetterErrorMessageFaults”注册的类型“MyProject.Web.Services.BetterErrorMessageFaultBehavior,MyProject.Web.Services,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”

以下是Web.config的相关部分:

<system.serviceModel>
  <extensions>
    <behaviorExtensions>
      <add name="betterErrorMessagesFaults" 
        type="MyProject.Web.Services.BetterErrorMessagesFaultBehavior, MyProject.Web.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
    </behaviorExtensions>
  </extensions>
  <services>
    <service name="MyProject.Web.Services.Service2">
      <endpoint address="" binding="customBinding" 
          bindingConfiguration="MyProject.Web.Services.Service2.customBinding0" 
          contract="MyProject.Web.Services.Service2" 
          behaviorConfiguration="BetterErrorMessagesFaultBehavior"/>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
        <dataContractSerializer maxItemsInObjectGraph="2147483647" />
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="BetterErrorMessagesFaultBehavior">
        <betterErrorMessagesFaults/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <bindings>
    <customBinding>
      <binding name="MyProject.Web.Services.Service2.customBinding0">
        <binaryMessageEncoding>
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
            maxDepth="2147483647" maxNameTableCharCount="2147483647" 
            maxStringContentLength="2147483647" />
        </binaryMessageEncoding>
        <httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
            maxBufferSize="2147483647" />
      </binding>
    </customBinding>
  </bindings>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>


但没有效果。我读到这是非常敏感的空间等,但我看不到任何问题的领域。我还查看了AssemblyInfo,版本为1.0.0.0,区域性为空(“”),我不知道PublicKeyToken的用途,但我怀疑这不是问题所在


所以我被难住了,不知道下一步该去哪里。

可能晚了一点,但您可以通过执行以下操作来验证您的类型指定是否正确:

Console.WriteLine(typeof(BetterErrorMessagesFaultBehavior).AssemblyQualifiedName)

应该包含PublicKeyToken部分供您比较

<add name="betterErrorMessagesFaults" 
    type="MyProject.Web.Services.BetterErrorMessagesFaultBehavior, MyProject.Web.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
<add name="betterErrorMessagesFaults" 
    type="MyProject.Web.Services.BetterErrorMessagesFaultBehavior, MyProject.Web.Services"/>