Umbraco CMS(.NET):记录加载xslt /用户控件时出现的错误

5
我想知道在Umbraco中是否有一种方法可以记录当它无法加载xslt或用户控件时出现的错误。通常会显示一个红框,指示无法加载控件等信息。是否有一种正确的记录方式?
提前感谢您的回复。

希望有人至少能发布一些答案...真的在寻找解决方案。 - MSI
1个回答

4

首先,这并不是真正支持的...当出现错误时,它会输出HTML并写入ASP.NET跟踪日志。

这里是我处理这个问题的方法。我的大多数Umbraco安装都使用Elmah进行异常记录和log4net进行应用程序记录。这应该会给你任何输出错误。

using System;
using System.Linq;
using System.Web;

public class MacroLogging : IHttpModule {

    public void Init(HttpApplication context) {
        context.LogRequest += ContextLogRequest;
    }

    static void ContextLogRequest(object source, EventArgs e) {
        var app = (HttpApplication)source;
        var context = app.Context;
        context.Trace.TraceFinished += TraceFinished;
    }

    static void TraceFinished(object sender, TraceContextEventArgs e) {
        var records = e.TraceRecords.Cast<TraceContextRecord>();
        var categoryTypes = new[] {"Macro", "macro", "umbracoMacro"};
        var traceOutput = records.Where(p => categoryTypes.Contains(p.Category) && p.IsWarning)));
        foreach (var entry in traceOutput) {
            //Your Output entry.Message
        }
    }

    public void Dispose() {}

}

只需将模块添加到您的web.config文件中。虽然我还没有测试过(因为现在已经凌晨1点),但总体概念应该是可行的。


哇,谢谢!我还以为没人会回答呢。我会测试一下,然后标记为答案 :) - MSI
我尝试了这个,但在MacroLogging->Init方法中出现运行时异常,提示需要IIS集成模式进行所需操作,而我使用的是经典模式。有什么办法可以解决这个问题吗? - Ken D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接