首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF:无法捕获FaultException(TDetail) -仅限非泛型FaultException

WCF:无法捕获FaultException(TDetail) -仅限非泛型FaultException
EN

Stack Overflow用户
提问于 2014-08-15 08:03:40
回答 1查看 504关注 0票数 2

我在服务器上抛出了FaultException,但它在客户机上没有被捕获。客户端只能捕获不公开细节的非通用FaultException。

有什么可能遗漏或错误的想法吗?

我的服务合同:

代码语言:javascript
运行
复制
[ServiceContract]
public interface IServicoLoja
{
    [OperationContract]
    [FaultContract(typeof(RetornoErro))]
    Retorno<Guid> AdicionarOuAlterar(Loja req);
}

实施:

代码语言:javascript
运行
复制
[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);
        }
        .....
    }
}

服务代理:

代码语言:javascript
运行
复制
public class ServicoLojaClient : ClientBase<IServicoLoja>, IServicoLoja
{
    public Retorno<Guid> AdicionarOuAlterar(Loja req)
    {
        return Channel.AdicionarOuAlterar(req);
    }
}

在客户端:

代码语言:javascript
运行
复制
try
{
    ...
}
catch (FaultException<RetornoErro> ex)
{
    //this is not reached
}
catch(FaultException ex)
{
    //this is reached
}

服务协定位于客户端上引用的独立程序集上。包含"RetornoErro“的程序集也会被引用。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-08-15 08:46:56

我找到了问题所在:

RetornoErro有一个带有DataMember的属性,但没有setter,所以我猜它不能反序列化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25319434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档