【问题标题】:Exception Handling with IErrorHandler使用 IErrorHandler 处理异常
【发布时间】:2012-07-19 12:07:52
【问题描述】:

我有几个关于 IErrorHandler 的问题。

1) 如果我在服务的方法中显式抛出异常,它会被实现接口的类型捕获吗?

2) 如何在两个不同的服务之间共享类型?

【问题讨论】:

    标签: wcf ierrorhandler


    【解决方案1】:

    1) 是的,当它被标记为错误处理属性时

    2) 是的,当为此配置服务时

    您可以在服务之间共享错误处理程序 提供更多信息的最佳地点在这里:

    http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx

    还要考虑 HandleError 是多个线程可以执行的方法

    【讨论】:

    • on 1) 你的意思是如果服务操作被标记了[FaultContract(typeof(T))] 属性?
    • 是的,不要忘记为每个服务添加服务行为扩展以进行错误处理
    • 如果我想抛出一个 CLR 异常,在ProvideFault() 上捕获它并构造一个FaultException<typeof(T)> 以创建ProvideFault() 的引用消息。我还需要添加FaultContractAttribute吗?
    • 这是 WCF 服务所在的 IIS 应用程序池关闭的原因吗?我整天都在努力解决这个问题!我正在尝试不使用FaultContractAttribute。我会用声明的属性再试一次,看看会发生什么。
    • 如果是这样,未捕获的异常如何传播到ProvideFault()?这没有意义。 IErrorHandler 的目的不是首先捕获未处理的异常吗?那些从服务操作或下游业务组件中抛出的未使用 FaultContractAttribute 声明的异常?
    猜你喜欢
    • 2013-07-31
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多