创建 WCF Web 服务时出错

Jay*_*Jay 5 wcf

我创建了一个新的 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>
Run Code Online (Sandbox Code Playgroud)

背景是,我dll从第三方获得了一个新的 Web 服务,以便我可以实现所需的所有接口方法,但是当我尝试通过 Visual Studio 运行此 Web 服务时,我收到上面显示的错误。

如果我直接运行website.com/folder/serviceName.svc,我会看到该服务,但单击它不会执行任何操作。

更新:我已经修复了上述错误,我在web.config文件中进行了一些更改,但现在当我运行我的服务时,我没有得到任何方法(我正在使用 Visual Studio 内置的 WcfTestClient)

小智 26

这个问题在VS2022中依然存在。事实证明,取消选中“引用程序集中的重用类型”并删除 obj 和 bin 目录会有所帮助。


小智 2

我认为您需要添加一个具有正确 ServiceMethod 属性的合同接口,如下所示http://msdn.microsoft.com/en-us/library/ms731835(v=vs.110).aspx

这将允许 WCF 的内部为您生成 wsdl,并且也将允许 svcutil.exe 为您生成客户端代码。

忘记提及您也希望您的服务继承它,所以也许您可以从命名空间.serviceName 推断它?

另外,不要忘记界面上的 DataContract 和 ServiceContract 属性。