8

Elmah.SqlErrorLog を使用してエラーを記録しているサイトが 1 つあります。私の目標は、localhost/elmah.axd で通常表示されるページを提供するハンドラーを別のサイトに含めることです。その理由は、エラーをログに記録しているサイトは Forms 認証を使用しているのに対し、ログを参照できるユーザーを Windows 認証で制限したいからです。

ロギングを行っているサイトはポート 80 で実行されており、ログを表示するサイトはポート 8008 で実行されています。最初は、ロギング サイトからの例外を確認できませんでした。次に、この回答を見つけました。これは、errorLog の applicationName を設定できることを説明しています: ELMAH のログ用の別のビューアー アプリケーション

ELMAH がログを記録するテーブルを調べたところ、ログと表示を 2 つの異なるサイトに分離しようとする前に、アプリケーション列に "/LM/W3SVC/3/ROOT" が記録されていたことがわかりました。

applicationName="/LM/W3SVC/3/ROOT" を指定したら動きました!残念ながら、この値はマシンごとに異なり、次の開発者の開発ボックスの applicationName が "/LM/W3SVC/10/ROOT" である場合、うまく機能しません。これによると、その文字列はローカル マシンの名前空間と関係があります

ログを表示してポート 80 のサイトから記録された例外を表示するためのポート 8008 のサイトを取得するにはどうすればよいですか?

4

1 に答える 1

14

applicationName を明示的に設定すると、これは例外をデータベースに記録するときに使用する名前になります。

両方のサイトの構成で applicationName="Foo" を設定すると、ポート 80 でサイトに記録された新しい例外は、ポート 8008 でサイトに表示されるはずです。

この変更の前に記録された古いエラーを表示する必要がある場合は、ELMAH_Error テーブルの Application フィールドを 'Foo' に更新することもできます。

編集

applicationName 値は、web.config の errorLog 要素の属性として設定されます。

    <elmah>
        <security allowRemoteAccess="false" />
        <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" applicationName="Foo" />
    </elmah>
于 2012-09-23T01:41:18.637 に答える