23

これはセットアップが簡単ではありません。セットアップ構成に欠落しているステップがあるか、正しく機能していないか、実際にはその目的がわかりません。ここには間違いなく何かが間違っています。問題は明らかに私に違いない。私はこれがうまくいかないだけです。これが私がやったことです。

まったく新しい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」部分がReSharperエラーとして赤で表示され、「シンボル'.ctor'を解決できません」ということです。これはReflectorでelmah.dllを見ると、このオブジェクトが必要であることを示しています。 2つのパブリックコンストラクターのいずれかで「文字列」または「IDicationary」のいずれか。

VS2008でWindowsVistax64を実行しています。App_Dataのアクセス許可をCo_OwnerとしてEveryoneに設定します。

http:// localhost:xxxx / elmah.axdページが表示され、エラーは表示されません。「About」ページをもう一度押すと、まだ黄色の画面が表示され、elmah.axdはapp_dataフォルダーにエラーを表示しません。

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

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

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

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

それで、私はどこで混乱していますか?

〜-=マイク=-〜

4

4 に答える 4

21

ErrorLogModuleがconfiguration/system.web/httpModules(開発Webサーバーを使用している場合に使用される)とconfiguration/system.webServer/modules(IIS7で使用される)の両方に存在するかどうかを確認します。これがプロジェクトからの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>

お役に立てれば

于 2009-06-07T21:15:35.907 に答える
11

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

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

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

ELMAHをASP.NETMVC[HandleError]属性で動作させる方法については、このスタックオーバーフローの質問も確認してください。、それはAtifAziz自身によって答えられました。

HTH、チャールズ

于 2009-06-08T00:06:05.627 に答える
1

nugetからインストールしましelmahelmah on XML logが、アクセスはできましたが、期待どおりの機能が得られませんでしたhttp://localhost/elmah.axdが、エラーのキャプチャはありませんでした。

APP_DATAフォルダー内のアカウントIIS_IUSERSに書き込み権限を付与すると、HTTP404エラーとMVCインフラストラクチャの外部にあるエラーに対して機能し始めました。ただし、MVC内の例外はログに記録されませんでした。解決策は、 nugetからelmah.mvcパッケージをインストールすることであり、すべての例外のキャプチャを開始しました。

構成に問題がない場合は、nugetからパッケージをインストールするelmah.mvcだけで、HTTP 404だけでなく、mvc内にもログの保存が開始されます。

于 2013-01-03T15:06:44.537 に答える
0

問題はこの行です

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

に置き換えます

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
于 2013-03-12T17:42:16.083 に答える