我試圖在我的WCF服務中創建FaultException,以便我可以在我的WPF應用程序中顯示錯誤。我遇到的問題是FaultException仍然顯示/崩潰到我的服務,並不想在我的WPF應用程序(在消息框中)顯示錯誤。WPF應用程序中的FaultException仍然會引發WCF服務中的錯誤
這裏是我的編碼:
服務:
public void AddNewSupplier(SupplierData Data)
{
using (Database db = new Database())
{
var supplier = new Supplier
{
Name = Data.Name,
Address = Data.Address,
ContactNumber = Data.ContactNumber,
Description = Data.Description,
Terms = Data.Terms
};
if (db.Supplier.Any(sup => supplier.Name.Contains(sup.Name)))
{
throw new FaultException(new FaultReason("The database already contains the name " + supplier.Name + ". Please enter a diffirent name"), new FaultCode("Multiple Items"));
}
else
{
db.Supplier.Add(supplier);
db.SaveChanges();
}
}
}
客戶端應用:
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
using (MKCServiceClient service = new MKCServiceClient())
{
try
{
service.AddNewSupplier(new SupplierData
{
Name = txtName.Text,
Address = txtAddress.Text,
ContactNumber = txtContactNumber.Text,
Description = txtDescription.Text,
Terms = txtTerms.Text
});
}
catch (FaultException fe)
{
if (fe.Code.Name == "Multiple Items")
MessageBox.Show(fe.Reason.ToString());
}
}
}
什麼可能我是做錯了什麼?
如果異常在服務器端邏輯中處於「未處理」狀態,WCF異常將只會出現在線上。所以,如果你有父級別的話,嘗試/抓住它也需要重新拋到客戶端 – pnm
感謝您的評論! @pnm - 家長級別嘗試/趕上?在我的'AddNewSupplier'方法中沒有其他嘗試和捕獲,並且我的應用程序中唯一的try/catch工作正常,但* service *異常仍然首先被拋出,甚至不應該拋出。 – CareTaker22
您的服務異常是否向客戶提供?是的,它可能會包裝你的錯誤例外。檢查服務異常的InnerException屬性。 – pnm