Gibt es eine Möglichkeit, um programmatisch den Namen der Anwendung in Elmah eingestellt?

StackOverflow https://stackoverflow.com/questions/153054

  •  03-07-2019
  •  | 
  •  

Frage

Ich brauche die App-Namen zu ändern, basierend auf welcher Konfiguration, die ich in Visual Studio bin mit. Zum Beispiel, wenn ich in Debug-Konfiguration bin, mag ich den App-Namen als ‚App_Debug‘ im Anwendungsfeld in der Elmah_Error Tabelle zeigen. Hat jemand Erfahrung mit diesem? Oder gibt es eine andere Möglichkeit, es zu tun?

War es hilfreich?

Lösung

Standardmäßig verwendet Elmah die Anwendung des AppPool GUID als Standardanwendung Namen. Es nutzt dies als Schlüssel, um die Fehler in der Elmah_Error Tabelle zu identifizieren, wenn Sie auf der Web-Oberfläche suchen, die durch sie das HTTP-Modul erstellt wird.

wurde ich beauftragt, diese Option für meine Firma erkunden zu Beginn dieses Jahres. Ich konnte nicht einen Weg zu manipulieren dies standardmäßig finden, da Elmah den Namen der Anwendung von HttpRuntime.AppDomainAppId in der ErrorLog.cs Datei zieht. Man könnte es durch manipulieren, was auch immer Schlüssel Sie möchten; aber das ist die GUID des AppPool.

Mit dieser sagte, ich war in der Lage die ErrorLog.cs zu manipulieren Datei Elmah in einen aufrufbaren Rahmen zu drehen statt eines Handler basiert ein und erlauben Sie mir die Application gesetzt. Was ich am Ende tun ErrorLog.cs wurde Modifizieren einer Eigenschaft enthalten, die mir den Namen, wie unten abgebunden:

public virtual string ApplicationName
{
    get 
    {
        if (_applicationName == null) {  _applicationName = HttpRuntime.AppDomainAppId; }
        return _applicationName;
    }
    set { _applicationName = value; }
}

Was werden Sie wahrscheinlich tun müssen, ist dies einstellen anders und stellen Sie die Application nicht HttpRuntime.AppDomainAppId, sondern stattdessen ein Wert gezogen aus der web.config. Alles in allem ist es möglich. Die Art, wie ich es tat erhöhte die ErrorLog.Log(ex) Methode so konnte ich Elmah einen aufrufbare Rahmen über Web-Anwendungen. Im Rückblick Ich wünschte, ich stattdessen die app / web.config Ansatz tat.

Eine Sache im Auge zu behalten, wenn Sie die Anwendungsnamen in Elmah ändern. Der http-Handler, der die /elmah/default.aspx Schnittstelle generiert wird nicht mehr funktionieren. Ich versuche immer noch Zeit zu finden, um solche zu umrunden zurück; Sie können jedoch in der Schaffung eine benutzerdefinierte Schnittstelle aussehen müssen bei der Umsetzung.

Andere Tipps

Dies kann nun rein in Markup erfolgen. ein applicationName Attribut auf das errorLog Element im <elmah> Abschnitt der web.config-Datei einfach hinzufügen. Beispiel:

<errorLog type="Elmah.SqlErrorLog, Elmah" 
    connectionStringName="connectionString" applicationName="myApp"  />

Ich habe dies getestet und es funktioniert sowohl bei den eine Ausnahme Protokollierung und beim Betrachten des Protokolls über Elmah.axd.

Im Fall des OP, würde man sich vorstellen, es programmatisch zu gesetzt werden kann, aber das habe ich nicht getestet. Für mich und ich für die meisten Szenarien der Markup-Ansatz vorstellen, ausreichend ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top