首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF捕获自定义FaultException

WCF捕获自定义FaultException
EN

Stack Overflow用户
提问于 2012-08-29 08:36:49
回答 1查看 1.1K关注 0票数 1

我想像这样使用custome FaultException

代码语言:javascript
运行
复制
 [DataContract]
public class Fault
{
    [DataMember]
    public string Message { get; set; }
}

public class MyFault<T>:FaultException<T> where T : Fault
{
     public MyFault(T faultClass)
        : base(faultClass, new FaultReason(faultClass.Message))
    {

    }
}

..。

代码语言:javascript
运行
复制
throw new MyFault<Fault>(new Fault {Message = "hello"});

..。

接口

代码语言:javascript
运行
复制
[OperationContract]
[FaultContract(typeof(Fault))]
string GetData2(int value);

但是当它到达客户端时,它就会转换为FaultException

代码语言:javascript
运行
复制
      try
        {
            var res = serv.GetData2(1);
        }
        catch (MyFault<WcfService1Sample.Fault> ex)
        {
            label1.Text = ex.Reason.ToString(); //-> i want here
        }
        catch (FaultException<ServiceReference1.Fault> ex)
        {
            label1.Text = ex.Reason.ToString(); //-> catch here
        }
        catch (Exception)
        {

            throw;
        }

我能抓到克林特的自定义错误吗?或WCF自动转换为FaultException,如何使此问题工作?

谢谢kfir

EN

回答 1

Stack Overflow用户

发布于 2012-08-29 09:57:16

我认为有两个问题。第一:

  • shambulator说:您的自定义Fault类必须是
    • 一个DataContract,并使用
    • DataMember标记所有应序列化的属性。

如果这样做了,WCF将

  • 将服务端throw new FaultException<MyFault>(new MyFault { ... });转换为包含错误(包括数据)的消息;
  • 将客户端的此错误转换为FaultException<MyFault>

第二:

此客户端FaultException<>由WCF生成。也许一个人可以注册一个自定义的异常翻译,但我从来没有使用过它,从来不需要它,也没有在谷歌搜索一分钟后找到这样的东西。我建议只使用FaultException加上自定义的错误类型。

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

https://stackoverflow.com/questions/12173870

复制
相关文章

相似问题

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