我在服务器上抛出了FaultException,但它在客户机上没有被捕获。客户端只能捕获不公开细节的非通用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“的程序集也会被引用。
谢谢。
发布于 2014-08-15 08:46:56
我找到了问题所在:
RetornoErro有一个带有DataMember的属性,但没有setter,所以我猜它不能反序列化。
https://stackoverflow.com/questions/25319434
复制相似问题