创建WCF Web服务时出现错误

5
我创建了一个新的WCF Web服务,但是当我尝试运行它时,出现了这个错误信息:
“未生成任何代码。如果您正在尝试生成客户端,则可能是因为元数据文档不包含任何有效的合同或服务,或者因为所有的合同/服务都被发现存在于/reference程序集中。请验证您将所有的元数据文档传递给了工具。警告:如果您想从模式生成数据合同,请确保使用/dataContractOnly选项。”
我的web.config文件如下:
<services>
     <service name="namespace.serviceName" 
              behaviorConfiguration="MyServiceTypeBehaviors" >
         <endpoint 
             address="mex" 
             binding="mexHttpBinding" 
             contract="IMetadataExchange" />
     </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="MyServiceTypeBehaviors">
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

背景是,我从第三方获得了一个dll,并创建了一个新的Web服务以实现所需的所有接口方法,但当我尝试通过Visual Studio运行此Web服务时,出现上述错误。
如果我直接运行website.com/folder/serviceName.svc,我可以看到该服务,但点击它不起作用。
更新:我已经在web.config文件中进行了一些更改,修复了上述错误,但现在当我运行我的服务时,没有方法可用(我正在使用Visual Studio内置的WcfTestClient)。
2个回答

25

这个问题在VS2022仍然存在。原来的解决方法是取消"在引用的程序集中重复使用类型"并删除obj和bin目录。


1
这对我有用... 标记的答案很明显,我自己已经做过了。 - Egli Becerra
这对我也起作用了。 - undefined
同样。对我来说也解决了问题。 - undefined

2
我认为您需要添加一个带有正确ServiceMethod属性的合同接口,如此处所示:http://msdn.microsoft.com/en-us/library/ms731835(v=vs.110).aspx。这将允许WCF内部为您生成wsdl,从而使svcutil.exe也能为您生成客户端代码。
另外,不要忘记在您的接口上添加DataContract和ServiceContract属性。同时,您可能还需要从namespace.serviceName中推断出它们继承自哪个服务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接