我正在抛出FaultException< RetornoErro>在服务器上,但它没有被客户端捕获。客户端只能捕获不公开Detail的非泛型FaultException。
任何可能遗漏或错误的想法?
我的服务合同:
[ServiceContract]
public interface IServicoLoja
{
[OperationContract]
[FaultContract(typeof(RetornoErro))]
Retorno<Guid> AdicionarOuAlterar(Loja req);
}
实现:
[ServiceBehavior]
public class ServicoLoja : IServicoLoja
{
public Retorno<Guid> AdicionarOuAlterar(Modelo.Loja req)
{
try
{
......
}
catch (Exception ex)
{
var ret = new RetornoErro(ex);
throw new FaultException<RetornoErro>(ret, ex.Message);
}
.....
}
}
服务代理:
public class ServicoLojaClient : ClientBase<IServicoLoja>, IServicoLoja
{
public Retorno<Guid> AdicionarOuAlterar(Loja req)
{
return Channel.AdicionarOuAlterar(req);
}
}
在客户端:
try
{
...
}
catch (FaultException<RetornoErro> ex)
{
//this is not reached
}
catch(FaultException ex)
{
//this is reached
}
服务合同位于客户端上引用的独立程序集上。包含“RetornoErro”的程序集也被引用。
感谢。
答案 0 :(得分:3)
我发现了问题:
RetornoErro有[DataMember]的属性,没有setter,所以我猜它不能被反序列化。