Umbraco CMS (.NET): регистрация ошибок загрузки xslt / элементов управления пользователя - PullRequest
5 голосов
/ 28 сентября 2010

Мне было интересно, есть ли способ в Umbraco регистрировать ошибки, которые мы получаем, когда не удается загрузить xslt или пользовательские элементы управления. Обычно это показывает красное поле, говорящее, что это не могло загрузить управление и прочее. Есть ли способ правильно зарегистрировать это?

Заранее спасибо.

1 Ответ

4 голосов
/ 30 сентября 2010

Во-первых, это не очень поддерживается ... При возникновении ошибок выводит 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 час ночи :), но общая концепция должна работать.

...