WCF服务抛出异常,但客户端永远不会收到它

时间:2013-11-26 11:54:45

标签: c# .net wcf

在我的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)

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您在visual studio中更改调试设置,我会说您的解决方案应该按预期工作。

转到Tools - &gt; Options - &gt; Debugging - &gt; General并取消选中“Enable the exception assistant”。