2012-02-27 76 views
5

我正在嘗試創建一些自定義FaultException。我製作了DataContract課程,名稱爲CreateFaultWCF自定義故障異常未在客戶端正確捕獲

[DataContract] 
public class CreateFault 
{ 
    private string report; 

    public CreateFault(string message) 
    { 
     this.report = message; 
    } 

    [DataMember] 
    public string Message 
    { 
     get { return this.report; } 
     set { this.report = value; } 
    } 
} 

然後,我在服務方法中拋出了錯誤。

IService1.cs

[OperationContract] 
[FaultContract(typeof(CreateFault))] 
void TestFaultException(); 

Service1.cs

public void TestFaultException() 
{ 
    throw new FaultException<CreateFault>(new CreateFault("CreateFault message"), "Message abt exception"); 
} 

我趕上我的客戶FaultException

private void btnTest_Click(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); 
     client.TestFaultException(); 
    } 
    catch (FaultException<CreateFault> ex) 
    { 
     MessageBox.Show(ex.Detail.Message, "Success", MessageBoxButton.OK, MessageBoxImage.Error); 
    } 
    catch (FaultException ex) 
    { 
     MessageBox.Show(ex.Message, "Failure", MessageBoxButton.OK, MessageBoxImage.Error); 
    } 
    catch (Exception ex) 
    { 
    } 
} 

現在問題來了。當我在Visual Studio 2010中創建WCF服務應用程序項目時,它的工作方式與預期相同。正陷入錯誤:

catch (FaultException<CreateFault> ex) 

但是當我創建了一個WCF服務庫項目,我自定義FaultExceptions客戶不承認我的自定義異常。它取而代之的錯誤:

catch (FaultException ex) 

爲什麼它不適用於WCF服務應用程序項目?

編輯: 這是當它捕獲在

catch (FaultException ex) 

(鍵入立即窗口前?)

異常調試期間我得到什麼{ 「消息ABT例外」}

[System.ServiceModel.FaultException<WpfApplication1.ServiceReference2.CreateFault>]: {"Message abt exception"} 
base {System.ServiceModel.CommunicationException}: {"Message abt exception"} 
Action: "http://tempuri.org/IService1/TestFaultExceptionCreateFaultFault" 
Code: {System.ServiceModel.FaultCode} 
Message: "Message abt exception" 
Reason: {Message abt exception} 

編輯2:

發現問題。我有兩個服務引用都擁有CreateFault DataContract。當我運行程序時它使用了錯誤的。

當我改

catch (FaultException<ServiceReference2.CreateFault> ex) 

它的工作

+0

所有帳戶應該捕獲該異常。你能檢查catch異常是否是一個通用的「FaultException 」或者只是「FaultException」。 – Coder 2012-02-27 11:00:07

+0

這是當我在即時窗口中鍵入?ex時得到的內容?ex {「Message abt exception」} [System.ServiceModel.FaultException ]:{「Message abt exception」} base { System.ServiceModel。CommunicationException} {「Message abt exception」} 操作:「http://tempuri.org/IService1/TestFaultExceptionCreateFaultFault」 代碼:{System.ServiceModel.FaultCode} 消息:「消息abt異常」 原因:{Message abt例外} – 2012-02-27 13:50:52

+0

發現問題。我有兩個服務引用都擁有CreateFault DataContract。當我運行程序時它使用了錯誤的。 當我改 捕獲(的FaultException EX) 它的工作 – 2012-02-27 15:41:50

回答

4

發現問題。我有兩個服務引用都擁有CreateFault DataContract。當我運行程序時它使用了錯誤的。

當我改

catch (FaultException<ServiceReference2.CreateFault> ex) 

它的工作

相關問題