55

elmah.mvc nugetパッケージをインストールし、そのデフォルト構成を維持して、電子メールの送信とSQLデータベースへのプラグインを設定しました。

Visual Studioホストを使用しているローカルマシンで、アプリを開いて/ elmahにアクセスすると、エラーのレポートを確認できます。ただし、本番環境で/ elmahにアクセスしようとすると、2つのエラーが発生します。最初に、403 access is deniedサーバーエラーが発生します。次に、(elmahからの)私の電子メールで次のようになります。

System.Web.HttpException: Server cannot set status after HTTP headers have been sent.

誰もがここで何が起こっているのか、そしてどのように修正するのか知っていますか?ありがとう。

以下の回答で示唆されている限り、私は次のことを試しました。

<system.webServer>

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

そしてで<system.web>

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

パスを両方に設定してみましelmah.axd~/elmah。すべてが同じエラーを出し、ローカルで機能しますが、本番環境では機能しません。

編集:実際には、サーバーにリモートでアクセスし、サーバー上のブラウザーを介してアクセスした場合にも機能します(localhostではなく、実際のサイトアドレスを使用します)。では、私にはどのような許可がありませんか?サーバーレベルのようです。

4

2 に答える 2

118

<elmah>次の構成設定をweb.config ファイルのセクションに追加して、リモート アクセス用に Elmah を有効にする必要があります。この値の既定の設定は false で、localhost のみを許可するため、Visual Studio 内からローカル コンピューターで動作しているのはなぜですか。

   <elmah>
      <security allowRemoteAccess="true"/>
   </elmah>

私はいつもこれを自分で忘れて、数分間頭をかきむしっているようです ;)

于 2012-07-27T02:45:54.113 に答える
1

HttpHandlerがweb.configファイルのwebServerセクションで定義されていることを確認してください。

<system.webServer>
  <httpHandlers>
    <add name="elmah" verb="GET" path="elmah.axd"  type="Elmah.ErrorLogPageFactory, Elmah"/>
  </httpHandlers>
</system.webServer>
于 2012-07-26T17:10:40.250 に答える