Elmah.mvc nugetパッケージをインストールし、メールの送信とSQLデータベースへのプラグインをセットアップするのではなく、デフォルトの構成を維持しました。
ローカルコンピューターでVisual Studio Hostを使用しているときに、アプリを開いて/ 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ではなく実際のサイトアドレスを使用)。では、どのような許可を得ていませんか?サーバーレベルにあるようです。
Elmahでリモートアクセスを有効にするには、web.configファイルの<elmah>
セクションに次の構成設定を追加します。この値のデフォルト設定はfalseで、これはlocalhostのみを許可するため、Visual Studio内からローカルマシンで機能するのはなぜですか。
<elmah>
<security allowRemoteAccess="true"/>
</elmah>
私はいつもこれを自分で忘れているようで、数分かけて頭をかきます;)
HttpHandlerがweb.configファイルのwebServerセクションで定義されていることを確認してください。
<system.webServer>
<httpHandlers>
<add name="elmah" verb="GET" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
</httpHandlers>
</system.webServer>