可能的重复:
元素“behavior”在 wcf app.config 中具有无效的子元素“myFaultExtension” https://stackoverflow.com/questions/4677377/the-element-behavior-has-invalid-child-element-myfaultextension-in-wcf-app-c
我正在尝试实施在 Silverlight 中创建和处理故障 http://msdn.microsoft.com/en-us/library/dd470096%28VS.95%29.aspx. (This http://www.benday.com/2010/08/16/how-to-permanently-banish-silverlights-not-found-error-for-wcf-service-calls/项目在我的机器上运行。)
我收到 Visual Studio 警告:
元素“behavior”具有无效的子元素“betterErrorMessagesFaults”。
其他地方的其他答案说我应该忽略它,但我不能,因为我无法更新非 .Web 项目(包含所有 xaml 文件的项目)中的服务引用。当我尝试时,我收到此错误:
解析器错误消息:无法加载为扩展“betterErrorMessagesFaults”注册的类型“MyProject.Web.Services.BetterErrorMessagesFaultBehavior、MyProject.Web.Services、Version=1.0.0.0、Culture=neutral、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>
The BetterErrorMessagesFaultBehavior
只是类的复制粘贴在 MSDN 上 http://msdn.microsoft.com/en-us/library/dd470096%28VS.95%29.aspx;仅更改名称(我也尝试使用默认名称),并且命名空间更改为MyProject.Web.Services
.
我也尝试过交换
<add name="betterErrorMessagesFaults"
type="MyProject.Web.Services.BetterErrorMessagesFaultBehavior, MyProject.Web.Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
with
<add name="betterErrorMessagesFaults"
type="MyProject.Web.Services.BetterErrorMessagesFaultBehavior, MyProject.Web.Services"/>
但没有效果。我读到这对空格等极其敏感,但我看不到任何问题区域。我还查看了 AssemblyInfo,版本是 1.0.0.0,文化只是空白(“”),而且我不知道 PublicKeyToken 的用途,但我怀疑这不是问题所在......
所以我很困惑,不知道下一步该看哪里。