IMetadataExchange的合同属性无效

isx*_*pjm 37 wcf

我已将WCF服务升级到.NET Framework 4.5.这样做之后,我注意到IMetaDataExchange主机配置文件中有一条蓝色波浪线.

这就是配置的服务部分:

<services>
    <service behaviorConfiguration="MyBehavior" name="MyServiceHost">
        <endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停IMetadataExchange在错误上时说:

'contract'属性无效 - 值'IMetadataExchange'根据其数据类型'serviceContractType'无效 - Enumeration约束失败.

该服务似乎工作正常.所以我很好奇为什么这是无效的.

Ana*_*and 52

关闭VS后可以删除.SUO(解决方案用户选项文件)文件吗?这将重置VS中XMLEditor组件的缓存并解决您的问题.

  • 这对我有用,应该标记为答案. (9认同)
  • 是的,似乎工作了几分钟.然后,如果您退出或让后台编译器有机会赶上,它会再次出现.只是临时救济. (7认同)
  • 我在哪里可以找到.suo文件?我找不到.sln在哪里.编辑:发现它 - 它是隐藏文件. (3认同)
  • 在VS.NET 2012中为我工作 (2认同)

小智 16

我将System.ServiceModel添加到项目的引用中,它就消失了


cor*_*ori 10

我有一个类似的问题 - 我的WCF服务的App.Config中显示的几个namecontract属性带有可怕的蓝色波浪形,并且错误列表中显示警告.

在我的情况下问题是,在创建服务和合同后,我重构了服务项目的名称空间,因此生成的特定于解决方案的*.xsd使用了新的名称空间,但我的重构工具没有更新App.Config变化.进入并添加完全指定的命名空间修复了该问题.

  • 当然,显然是VS2012的方式通知你指定的类型在任何引用的程序集中都找不到 - 超级有用(但显示的消息有点神秘,我必须承认) (6认同)

Col*_*eel 7

也许不是OP的答案,但是有这个问题的其他人应该检查[ServiceContract]是否为interface您的服务声明了,因为这会产生确切的错误.