我有一个自动生成的公共接口bu svcutil:
[System.ServiceModel.ServiceContractAttribute(Namespace="...", ConfigurationName="...")]
public interface MyInterface
然后我有asmx web服务继承它并且工作正常。我正在尝试将其转换为WCF,但是当我使用ServiceContract检测服务(在asmx.cs代码中)时:
[ServiceContract(Namespace = "...")]
public class MyService : MyInterface
此外,我已经删除了.svc文件,并在配置文件中添加了system.serviceModel设置。目标是将asmx服务迁移到WCF服务。
我有这个错误:
MyService类型的服务类都定义了一个ServiceContract,并从MyInterface类型继承了ServiceContract。合同继承只能在接口类型中使用。如果类使用ServiceContractAttribute标记,则它必须是ServiceContractAttribute层次结构中的唯一类型。
asmx服务仍然正常运行。只有.svc给了我一些问题。我的问题是如何解决这个问题。 MyInterface是一个界面,所以我看不出问题是什么,为什么我还有错误。
注意我不想更改MyInterface,因为它是从我的wsdl架构的svcutil自动生成的,我不希望手动编辑此接口。整个想法是从WSDL自动生成服务类型,并通过手动编辑来保存我的团队开发工作。
感谢任何帮助。
答案 0 :(得分:1)
您需要从ServiceContractAttribute
课程中删除MyService
。此属性已在接口中定义,这是指定此接口将作为WCF服务公开的正确方法。