我试图从 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));
}
在 Service 模块的 app.config 中,我添加了以下属性
serviceDebug includeExceptionDetailInFaults="True"
有人知道解决方案吗?
最佳答案
您必须将 FaultContractAttribute 添加到方法 SearchUserDetail
中,如果它具有 OperationContractAttribute 并且是您的 ServiceContract 类的一部分。
[ServiceContract]
interface IMyServiceContract
{
[OperationContract]
[FaultContract(typeof(...)]
IList<UserEntity> SearchUserDetail(string userName)
}
我不确定 FaultContract 的类型。但是看看 msdn。
关于c# - WCF 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5336698/