2017-04-11 4 views
1

MVCアプリケーションは複数存在します。つまり、正確に同じアプリケーションが複数のIIS仮想ディレクトリ/アプリケーションに公開され、それに応じて自己(CSS)をスキンします。Web.configに設定されたElmahアプリケーション名を無効にする方法

これは非常によく、すべてのですが、これはすべてが「もしmyAppName」として記録されるだろう場所の下のWeb.Config ELMAHのセクションから引き抜かれるよう、当社のELMAHデータベースにELMAHによって記録されたものは、同じのapplicationNameの下に記録されます:

<configuration> 
    [...] 
    <elmah> 
    <security allowRemoteAccess="false" /> 
    <errorLog 
     type="Elmah.SqlErrorLog, Elmah" 
     connectionStringName="elmah" 
     applicationName="MyappName" /> 
    </elmah> 
</configuration> 

したがって、特定のテナントWebサイトのエラーを区別できるように、web.configからapplicationName設定を特定のものに変更する方法は問題です。

答えて

1

これはweb.config内で設定可能であるため、ELMAHはアプリケーションが異なる場所に配置されているときにアプリケーション名を指定する方法をすでに提供しています。

これは一般に、展開手順の一部として操作するものです。手動で行っているのであれば、それは痛みになりますが、web.configトランスフォームを使用して簡単に操作できます。

<?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> 

次はうまくいくかもしれないならば、あなたのGlobal.asaxに以下を入れた場合、私は、不思議:

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

こんにちはルーク入力に感謝。残念ながら、これは私たちが顧客(すなわちテナント)ごとに変換をしていないので機能しません。基本的にELMAHに表示したい顧客/テナントの名前です。 私たちはDEV環境、UAT環境、LIVE環境の違いに変換を使用していますが、顧客ごとではありません。200以上のプロジェクト構成と変換が必要ないためです。 –

+0

これは、展開中に簡単に自動化できるものです。どのテナントがどの場所に配置されているかを知っていれば、正しい詳細でconfigsを修正する絶好の機会です。 – Luke

+1

私はちょうどそれがうまくいくのだろうかと思ういくつかのコードを追加しました。私はあなたがSQLにログインしていると仮定しています。 – Luke

関連する問題