在我的wcf服务中,我有暴露给服务客户端的方法。此方法使用FaultContract属性修饰,因此我可以返回并捕获自定义异常。
在IBookService里面我有
[FaultContract(typeof(BookServiceAuthorizeFault))]
[OperationContract]
IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre);
自定义类型的错误包含在
中[DataContract]
public sealed class BookServiceAuthorizeFault
{
private string _Message;
public BookServiceAuthorizeFault(string message)
{
_Message = message;
}
[DataMember]
public string Message
{
get { return _Message; }
set { _Message = value; }
}
}
Insude Service实现此接口我故意抛出异常
public IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre)
{
throw new FaultException<BookServiceAuthorizeFault>(new BookServiceAuthorizeFault("Unauthorize access"));
}
最后在客户端我希望捕获此异常
catch (FaultException<BookServiceAuthorizeFault> bsaf)
{
MessageBox.Show(bsaf.Message);
}
但是这个catch块永远不会被命中,我在服务端遇到了未处理的用户异常
在public IEnumerable<string> GetAllBookTitlesFromSpecificGenre(string genre)
我在这里做错了什么?
答案 0 :(得分:1)
如果您在visual studio中更改调试设置,我会说您的解决方案应该按预期工作。
转到Tools
- &gt; Options
- &gt; Debugging
- &gt; General
并取消选中“Enable the exception assistant
”。