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

Asp.net Umbraco CMS(.NET):加载xslt/用户控件时记录错误,asp.net,user-controls,umbraco,Asp.net,User Controls,Umbraco,我想知道在Umbraco中是否有一种方法可以记录我们在加载xslt或用户控件失败时遇到的错误。通常,它会显示一个红色框,表示无法加载控件和其他内容。有没有办法正确地记录这一点 提前谢谢 首先,它实际上不受支持。。。出现错误时,它会输出html并写入asp.net跟踪日志 以下是我将如何处理这个问题。我的大多数Umbraco安装都使用Elmah记录异常,使用log4net记录应用程序。这会给您任何输出错误 using System; using System.Linq; using System.

我想知道在Umbraco中是否有一种方法可以记录我们在加载xslt或用户控件失败时遇到的错误。通常,它会显示一个红色框,表示无法加载控件和其他内容。有没有办法正确地记录这一点


提前谢谢

首先,它实际上不受支持。。。出现错误时,它会输出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() {}

}
使用系统;
使用System.Linq;
使用System.Web;
公共类宏日志:IHttpModule{
公共void Init(HttpApplication上下文){
context.LogRequest+=ContextLogRequest;
}
静态void ContextLogRequest(对象源,EventArgs e){
var app=(HttpApplication)来源;
var context=app.context;
context.Trace.TraceFinished+=TraceFinished;
}
静态void TraceFinished(对象发送方,TraceContextEventArgs e){
var records=e.TraceRecords.Cast();
var categoryTypes=new[]{“宏”、“宏”、“umbracoMacro”};
var traceOutput=records.Where(p=>categoryTypes.Contains(p.Category)和&p.IsWarning));
foreach(traceOutput中的var条目){
//您的输出条目。消息
}
}
public void Dispose(){}
}

只需将模块添加到web.config。我还没有测试,因为现在是凌晨1点:),但总体概念应该是可行的。

hm希望有人至少发布一些答案…真的在寻找解决方案。哇,谢谢,我想没有人会回答!我将进行测试,然后标记为答案:)我尝试了这个,但它在MacroLogging->Init方法中给出了一个运行时异常,表示所需的操作需要IIS集成模式,我有classic。你知道怎么解决吗?