2010-02-08 52 views
6

我們有一個帶有WCF層的系統。WCF捕獲類型爲T或基類型的故障異常

的WCF服務可以拋出各種FaultExceptions,這些類型的異常:

FaultException<MyStronglyTypedException> 

所有強類型的異常從基本異常繼承。

public class MyStronglyTypedException : MyBaseException 

我可以捕獲FaultException,但是我沒有訪問FaultException的Detail屬性。

我想做些什麼美中不足的是:

FaultException<MyBaseException> 

但是這似乎並不可能。

有沒有一種方法可以訪問FaultException的Detail屬性,而不捕獲每個強類型的異常?

回答

5

如果你希望能夠趕上你的客戶端代碼的強類型FaultException<MyBaseException>,你必須與該類型FaultContract屬性裝飾你的服務方法:

[ServiceContract] 
interface IYourService 
{ 
    [OperationContract] 
    [FaultContract(typeof(MyBaseException))] 
    ResponseType DoSomethingUsefulHere(RequestType request); 
} 

如果你不「宣佈」要堅決對付那些特定類型的輸入FaultContract<T>例外,WCF會將所有服務器端故障轉換爲通用FaultContract實例。

1

不要對你有一個經得起考驗的答案,但這種聯繫可能是有用的:

Exception Handling in WCF using Fault Contract

+0

謝謝,但是這是目前我們在做什麼,在那裏他有: 趕上(的FaultException EE) 我們有超過100種不同的例外情況,目前我已經寫了一個程序來生成這個碼。 – 2010-02-08 13:54:37