質問

これはセットアップが簡単だとは思えません。セットアップ構成に欠落している手順があるか、正しく動作していないか、またはその目的を実際に理解していません。ここには決定的に何かが間違っています。問題は明らかに私にあるはずです。これがうまくいきません。これが私がやったことです。

新しい mvc アプリケーションを作成します。About.aspx ページに以下を配置しました。

<% throw new Exception("blah");%>ここにコンテンツを入れます。

ページにアクセスすると、例外を除いて黄色の画面が表示されます。

elmah.dll を bin ディレクトリに追加します。

Web.config ファイルの設定セクションに追加します。

<sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>

httpHandlers セクションに次の内容を追加します。

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

モジュールセクションに以下を追加します。

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>

ハンドラーセクションに以下を追加します。

<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>

elmah セクションを追加します。

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

ここで興味深いのは、その文字列の「.XmlFileErrorLog」部分が、「シンボル '.ctor' を解決できません」ということを示す ReSharper エラーとして赤色で表示されることです。Reflector で elmah.dll を見ると、このオブジェクトが必要であることが示されています。 2 つのパブリック コンストラクターのいずれかの「string」または「IDicationary」。

Windows Vista x64 と VS 2008 を実行しています。App_Data に対する権限を共同所有者として全員に設定します。

http://localhost:xxxx/elmah.axd ページは表示され、エラーは表示されません。もう一度「About」ページにアクセスすると、依然として黄色い画面が表示され、elmah.axd では app_data フォルダーにエラーが表示されません。

customerror を次のものに置き換えて、関連するページを作成しました。

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" />

カスタム ページは表示されますが、elmah.axd には「エラーなし」と表示されます。App_data はまだ空です。

このセットアップを開始するためのソースとして、次のものを使用しました。code.google.com/p/elmah/wiki/MVC

それで、私はどこで混乱しているのでしょうか?

~-=マイク=-~

役に立ちましたか?

解決

ErrorLogModuleは両方(あなたが開発のWebサーバー上にある場合に使用)configuration/system.web/httpModulesと(IIS7で使用される)configuration/system.webServer/modulesに存在しているか確認してください。ここでは、私は現在のプロジェクトからのweb.configファイルの断片で働いているされます:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </httpModules>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="ErrorLog" />
            <remove name="ErrorMail" />
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
        </modules>
    </system.webServer>
</configuration>

ホープ、このことができます。

他のヒント

このセクションを削除してみてください。

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

これは、Elmah がデフォルトのメモリ内ログのみを使用するように設定されていることを意味します。これはファイルのアクセス許可の問題ではないことがわかるため、トラブルシューティングに役立ちます。したがって、メモリ内ログを機能させることができたら、xml ファイルにログを記録するように設定できます。

この stackoverflow の質問もチェックしてみてください。 ELMAH を ASP.NET MVC [HandleError] 属性で動作させるにはどうすればよいですか?, 、それはアティフ・アジズ自身によって答えられました。

Hths、チャールズ

私はnuget elmahelmah on XML logからインストールし、私はhttp://localhost/elmah.axdにアクセスすることができましたが、予想されるfuncionalityを得たが、いなかったエラー無し取り込みます。

私は、フォルダApp_DataにでアカウントIIS_IUSERSへの書き込み権限を与え、それがHTTP 404エラーとMVCインフラストラクチャの外側にあるエラーのために働いて始めました。しかし、それは、MVCの内部例外をログに記録しませんでした。ソリューションはnugetからの elmah.mvc のパッケージをインストールして、それがすべての例外を捕捉し始めました。

お使いの設定がOKであれば、

、そしてちょうどnugetからelmah.mvcパッケージをインストールし、それだけでHTTP 404、MVCの内側にもログを保存しない起動する必要があります。

問題はこのラインである

  <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">

タグで、それを交換してください
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top