2010-04-21 43 views
0

我有一個公共接口自動生成BU SvcUtil工具:WCF的ServiceContract和SvcUtil工具問題

[System.ServiceModel.ServiceContractAttribute(Namespace="...", ConfigurationName="...")] 
public interface MyInterface 

然後,我有ASMX Web服務繼承它,做工精細。我想OT將其轉換爲WCF但是當我的儀器服務(在後面asmx.cs碼)用的ServiceContract:

[ServiceContract(Namespace = "...")] 
public class MyService : MyInterface 

而且我已經塗蠟.svc文件並添加在配置文件中的system.serviceModel設置。目標是將asmx服務遷移到WCF服務。

我得到這個錯誤:

服務類類型的MyService的兩個定義了的ServiceContract和繼承型MyInterface的一個的ServiceContract。合約繼承只能在接口類型中使用。如果一個類標記了ServiceContractAttribute,它必須是具有ServiceContractAttribute的層次結構中唯一的類型。

asmx服務仍然正常工作。只有.svc纔會給我提出問題。我的問題是如何解決這個問題。 MyInterface是一個界面,所以我沒有看到問題是什麼,爲什麼我得到了錯誤。

注意我不想更改MyInterface,因爲它是從我的wsdl模式中的svcutil自動生成的,我不希望手動編輯此接口。整個想法是從WSDL自動生成服務類型,並通過手動編輯節省團隊開發工作。

任何幫助表示讚賞。

回答

1

您需要從MyService類中刪除ServiceContractAttribute。該屬性已經在接口中定義,這是指定此接口將作爲WCF服務公開的正確方式。

+0

感謝annswer,什麼我教,但是當我刪除了服務合同,我得到這個錯誤: 合同名稱「的MyService」無法通過服務實現合同的列表中找到「爲MyService 」。 – Valko 2010-04-21 11:55:27

+0

它現在在我的配置文件中只是錯誤的合同名稱,所以謝謝你的幫助:-) – Valko 2010-04-21 12:36:44