【问题标题】:Is possible to integrate elmah with wf-wcf services using web.config?是否可以使用 web.config 将 elmah 与 wf-wcf 服务集成?
【发布时间】:2011-02-16 07:18:45
【问题描述】:

我正在使用 asp.net mvc、wf-wcf 服务和普通 wcf 开发企业应用程序。我想使用非托管异常的独特观点,我的问题是将 wf-wcf 服务与 ELMAH 集成。问题是在 wf-wcf 中我不能用 elmah 属性装饰 di 类,所以如果可能的话,我会使用 web.config 来实现。 有人可以帮助我吗? (这里讨论了如何使用属性Exception Logging for WCF Services using ELMAH 将 elmah 与 wcf 集成)

提前致谢 F.

【问题讨论】:

    标签: wcf workflow-foundation-4


    【解决方案1】:

    有趣的是,以前没有想到这一点,因为 ELMAH 是一个很棒的网站插件。

    同样的方法应该适用于 WF 服务。在配置文件中添加 ServiceErrorBehaviourAttribute 的方法是使用 BehaviorExtensionElement。下面的代码应该可以解决问题

    public class ServiceErrorBehaviourElement : BehaviorExtensionElement {
        public override Type BehaviorType {
            get { return typeof(ServiceErrorBehaviourAttribute); }
        }
    
        protected override object CreateBehavior() {
            return new ServiceErrorBehaviourAttribute();
        }
    }
    

    将类型注册到behaviorExtensions,您就可以将行为添加到您的工作流服务serviceBehaviors 元素中。

    【讨论】:

    • 只有在持久性存储被禁用(换句话说,没有 Appfabric)时引发异常时才有效。否则可能是因为工作流“忘记”托管在 wcf 中并且有上下文为 null 行为不会触发
    • 不确定我是否理解,IErrorHandler 是 WCF 调用堆栈的一部分,仅在 WCF 消息期间起作用。您的意思是当 WCF 消息导致从商店加载工作流时,它不会捕获错误?还是您指的是工作流程生命周期中其他时间的错误?
    • 问题在于,当 WCF 消息导致从商店加载工作流时,它不会捕获错误(抱歉我的英语不好)。
    • 终于设法很好地了解了这一点,只要我将 aspNetCompatibilityEnabled 设置为 true,在它被持久化并重新加载后,我的工作流就没有任何问题。使用 Elmah 的真正问题在于,它只能在 WCF 请求期间捕获错误,而不是在工作流在不同请求之间运行时捕获错误,这使得这对于使用工作流服务进行错误监视不太有用。
    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2015-11-22
    相关资源
    最近更新 更多