2010-09-28 10 views
5

Mi chiedevo se c'è un modo in Umbraco per registrare gli errori che si verificano quando non riesce a caricare xslt o controlli utente. Generalmente mostra una casella rossa che dice che non può caricare il controllo e cose del genere. C'è un modo per registrare correttamente questo?Umbraco CMS (.NET): errori di registrazione caricamento xslt/Controlli utente

Grazie in anticipo.

+0

hm spero che qualcuno invii alcune risposte almeno ... davvero alla ricerca di una soluzione. – MSI

risposta

4

Prima di tutto, non è realmente supportato ... Quando si verificano errori, emette html e scrive nel registro di traccia di asp.net.

Ecco come mi avvicinerei a questo. La maggior parte delle mie installazioni Umbraco utilizza Elmah per la registrazione delle eccezioni e log4net per la registrazione delle applicazioni. Questo dovrebbe darti degli errori sull'output.

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() {} 

} 

Basta aggiungere il modulo al web.config. Non ho provato perché è l'1: :) ma il concetto generale dovrebbe funzionare.

+0

Whoa grazie, pensavo che nessuno avrebbe risposto! Verificherò e segnerò come risposta :) – MSI

+0

Ho provato questo, ma sta dando un'eccezione run-time nel metodo MacroLogging-> Init, dicendo che l'operazione richiesta ha bisogno della modalità integrata IIS, e ho un classico. Qualche idea su come risolvere questo problema? –