从WCF抛出异常

时间:2011-03-17 08:38:41

标签: c# .net wcf exception



我正在尝试从WCF模块向客户端模块抛出异常。我收到以下错误“用户未处理FaultException”

服务方

public IList<UserEntity> SearchUserDetail(string userName)
{
    try
    {
        int y = 0;
        int u = 9 / y;
        return new UserViewModel().SearchUserDetail(userName);
    }
    catch (Exception ex)
    {
        throw new FaultException(
        new FaultReason(ex.Message),new FaultCode("Data Access Error"));
    }                 
}

在客户端

try
{             
    ServiceReference.ServiceClient servRef = new ServiceReference.ServiceClient();

    List<UserEntity> users = new List<UserEntity>();
    users.AddRange(servRef.SearchUserDetail("Jacson"));
    dataGridView1.DataSource = users;            
}
catch (System.ServiceModel.FaultException  exc)
{
    Logging.Log(new Exception("Search User", exc));
}

在服务模块的app.config中,我添加了以下属性

 serviceDebug includeExceptionDetailInFaults="True" 

任何人都知道解决方案吗?

3 个答案:

答案 0 :(得分:4)

如果它具有OperationContractAttribute并且是ServiceContract类的一部分,则必须将FaultContractAttribute添加到方法SearchUserDetail

[ServiceContract]
interface IMyServiceContract
{
  [OperationContract]
  [FaultContract(typeof(...)]
  IList<UserEntity> SearchUserDetail(string userName)
}

我不确定FaultContract的类型。但是看看msdn。

答案 1 :(得分:3)

答案 2 :(得分:1)

我知道我已经很晚了,但是万一有人偶然发现这个问题,我遇到了同样的错误,我的代码一切正常。

事实证明,由于某些调试选项,这只发生在Visual Studio环境中。有关说明,请参阅here