【发布时间】:2013-11-26 11:54:45
【问题描述】:
在我的 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)
我在这里做错了什么?
【问题讨论】: