2017-04-11 1 views
1

Wir haben eine MVC-App mit mehreren Mandanten, was bedeutet, dass genau die gleiche App in mehreren virtuellen Verzeichnissen/Anwendungen von IIS veröffentlicht wird, und dann die App selbst herausfindet wer es ist, und skins sein selbst (css) entsprechend.Wie Elmah Anwendungsname in Web.config überschreiben

Das alles sehr gut ist, aber durch ELMAH in unserer Elmah Datenbank protokollierte alles wird unter dem gleichen Anwendungsnamen angemeldet, da dies als „MyappName“ angemeldet sein würde aus Web.Config Elmah Abschnitt weiter unten, wo alles gezogen wird:

Die Frage ist daher, wie die applicationName Einstellung von web.config mit etwas Bestimmtem überschrieben wird, damit wir Fehler für eine bestimmte Mieter Website unterscheiden können.

Antwort

1

Da dies in der web.config konfiguriert werden kann, bieten ELMAH Ihnen bereits eine Möglichkeit, den Anwendungsnamen anzugeben, wenn die Anwendung an verschiedenen Standorten bereitgestellt wird - es ist nur ein Fall der Verwendung davon.

Dies wäre im Allgemeinen etwas, das Sie als Teil Ihrer Bereitstellungsschritte bearbeiten würden. Wenn Sie es manuell tun, dann wird es ein Schmerz sein, aber es könnte leicht manipuliert werden, indem Sie eine web.config Transformation verwenden.

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <elmah> 
     <errorLog applicationName="MyappName" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> 
    </elmah> 
</configuration> 

Ich frage mich, ob die folgenden funktionieren könnte, wenn Sie Folgendes in Ihre Global.asax setzen:

var service = ServiceCenter.Current; 

ServiceCenter.Current = context => 
{ 
    var connectionString = "YOUR CONNECTION STRING"; 
    var container = new ServiceContainer(service(context)); 
    var log = new SqlErrorLog(connectionString) { ApplicationName = "APP NAME HERE" }; 
    container.AddService(typeof(ErrorLog), log); 
    return container; 
}; 
+0

Hallo Luke Dank für die Eingabe. Leider würde dies nicht funktionieren, da wir keine Transformation pro Kunde (d. H. Mieter) haben, und es ist im Grunde der Name des Kunden/Mieters, den ich in ELMAH sehen möchte. Wir verwenden Transformationen für die Unterschiede zwischen den DEV-, UAT- und LIVE-Umgebungen, aber nicht pro Kunde, da wir nicht 200 + Projektkonfigurationen und daher mögliche Transformationen wünschen. –

+0

Dies kann während Ihrer Bereitstellungen leicht automatisiert werden. Wenn Sie wissen, welcher Mandanten an welchen Standorten bereitgestellt wird, ist dies die perfekte Gelegenheit, die Konfigurationen mit den richtigen Details zu patchen. – Luke

+1

Ich habe gerade etwas Code hinzugefügt, den ich frage, ob es funktioniert. Ich habe jedoch angenommen, dass Sie sich in SQL einloggen. – Luke