【问题标题】:WCF ServiceContract and svcutil issueWCF ServiceContract 和 svcutil 问题
【发布时间】:2010-04-21 11:06:13
【问题描述】:

我有一个自动生成的公共接口 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 生成,并通过手动编辑来节省我的团队开发工作。

感谢任何帮助。

【问题讨论】:

    标签: wcf svcutil.exe servicecontract


    【解决方案1】:

    您需要从 MyService 类中删除 ServiceContractAttribute。此属性已在接口中定义,这是指定此接口将作为 WCF 服务公开的正确方法。

    【讨论】:

    • 感谢您的回答,我教过的内容,但是当我删除服务合同时出现此错误:在服务实施的合同列表中找不到合同名称“MyService” “我的服务”。
    • 它现在可以工作了,只是我的配置文件中的合同名称错误,所以谢谢你的帮助:-)
    猜你喜欢
    • 2019-01-23
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    相关资源
    最近更新 更多