2013-04-04 53 views
0

我有2個WCF服務(不同的項目)與定義的MyExceptions共享一個類庫。WCF FaultException命名衝突

這兩種服務的用途:

Type namespace.MyException already defines a member called MyException with the same parameter types.

基本上類具有這樣的構造被定義了兩次相同的名字:

[OperationContract] 
[FaultContract(typeof(MyException))] 
void op(); 

當我在客戶端項目中,我得到補充兩個引用。 任何想法如何更改異常命名空間?

請注意:

  • 我使用svcutils
  • 命名空間選項不起作用。

感謝

+0

我在這裏有點困惑。你是什​​麼意思「命名空間選項不起作用」?你有沒有嘗試過使用'[FaultContract(typeof(some.namespace.MyException))]'? (我假設'MyException'的兩個版本有不同的名稱空間..?) – Kjartan 2013-04-04 10:15:46

+0

如果我使用svcutil/namespace:*,MyNs http:// myUrl我得到錯誤:無法導入wsdl:binding詳細信息:出現錯誤導入wsdl:binding所依賴的wsdl:portType。 – 2013-04-04 10:53:05

回答

1

使用svcutil /reference:SharedLibrary.dll創建代理。這樣svcutil將不會生成它在SharedLibrary.dll中找到的類,因此客戶端使用程序集中的類定義。

如果您還沒有這樣做,請不要忘記在客戶端項目中添加對DLL的引用。

+0

謝謝,我會試一試,並會讓你知道 – 2013-04-05 08:13:50

1

除了命名空間的建議有什麼可以做的是編輯由SvcUtil工具生成的代理代碼,並刪除重複的代碼爲MyException類。

步驟: 1.爲Service1創建代理文件。 2.爲Service2創建一個代理文件。 3.將代理添加到客戶端。 4.編譯時,如果已經聲明瞭MyException,會導致錯誤。 5.編輯其中一個代理並刪除MyException類代碼。

+0

這就是我現在正在做的。感謝你的回答。 – 2013-04-05 08:13:19