5
我正在嘗試創建一些自定義FaultException
。我製作了DataContract
課程,名稱爲CreateFault
。WCF自定義故障異常未在客戶端正確捕獲
[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)
它的工作
所有帳戶應該捕獲該異常。你能檢查catch異常是否是一個通用的「FaultException」或者只是「FaultException」。 –
Coder
2012-02-27 11:00:07
這是當我在即時窗口中鍵入?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
發現問題。我有兩個服務引用都擁有CreateFault DataContract。當我運行程序時它使用了錯誤的。 當我改 捕獲(的FaultException EX) 它的工作 –
2012-02-27 15:41:50