我在业务层创建了一个自定义异常,并且还使用了wcf层,我在业务层中调用方法,然后在另一个网站中调用wcf中的方法。我可以看到我在自定义异常中写入的消息,但是当程序在我的第一个catch块(第二个catch块)上,而不是点击我的第一个catch块(自定义异常的地方),当我将鼠标悬停在异常上时,我看到了我的消息但它是在我不熟悉的一种叫做faultexception的东西里面。并且在详细信息下......在那里我看到type = CanOnlyApplyOnceException。这是我的代码:
protected void AddNewApplication()
{
try
{
using (var proxy = new ServiceReference1.ServiceClient())
{
proxy.AddApplication(new Application
{
Credentials = 2,
Comments = txtComments.Text,
});
}
}
catch (CanOnlyApplyOnceException c)
{
ErrorSummary.AddError(c.Message, this);
return;
}
catch (Exception)
{
lblStatus.Text = "There has been an error. Please try again";
}
}
答案 0 :(得分:1)
你需要做两件事:
在WCF服务上的方法声明中添加FaultContract属性,如下所示:
[OperationContract]
[FaultContract((typeof(CanOnlyApplyOnceException))]
void AddApplication(Application your_variable_name);
然后确保抛出CanOnlyApplyOnceException类型的异常。
将您的catch块更改为:
catch (FaultException<CanOnlyApplyOnceException> c)
答案 1 :(得分:0)
根据服务的不同,您可以写
catch (FaultException<CanOnlyApplyOnceException> c)
{
ErrorSummary.AddError(c.Detail.Message, this);
return;
}