1

このカスタムエラーリダイレクトがweb.configファイルにありますが、追加したので機能していないようです。redirectMode="ResponseRewrite"

500エラーの場合は正常に機能しますが、404の場合は機能しません(404がある場合はリダイレクトされません)

これがからのコードですweb.config

<customErrors mode="On" redirectMode="ResponseRewrite"> 
   <error statusCode="404" redirect="/servererror/default.aspx" /> 
   <error statusCode="500" redirect="/servererror/default.aspx" /> 
</customErrors>

そして、これが私のservererror/default.aspxコードです

Dim err As System.Exception = Server.GetLastError()

Dim Errormail = New MailMessage

     'Send email to Bondholder using email address from form
     Errormail.To           = "email@email.co.uk"

     Errormail.From         = "servererror@email.co.uk"
     Errormail.Subject      = "Server Error Alert"
     Errormail.BodyFormat   = MailFormat.Text
     Errormail.Priority     = MailPriority.Normal
     Errormail.Body         = ("Error on page - " & err.InnerException.Message & vbcrlf & vbcrlf & "URL of the page - " & Request.Url.ToString())

     SmtpMail.SmtpServer    = "localhost"

     SmtpMail.Send(Errormail)

エラーが発生したときに送信者が私に電子メールを送信するredirectMode="ResponseRewrite"ように保持する必要がありますservererror/default.aspx

どんな助けでも大歓迎です

ありがとう

ジェイミー

アップデート

私はウェブを見て、同じ問題を抱えている他の人をかなり見つけましたが、決定的な答えを見つけることができません。

何か案は

ありがとう

ジェイミー

4

1 に答える 1

3

ページが見つからないときに一般的な.NETが表示されていると思いますか?

解決策は以下のとおりです。パスに〜が追加されていることに注意してください。

    <customErrors mode="On" redirectMode="ResponseRewrite">
        <error statusCode="404" redirect="~/servererror/default.aspx"/>
        <error statusCode="500" redirect="~/servererror/default.aspx"/>
    </customErrors>

アップデート:

あなたのソリューションは機能しますが、それは少しハッキーです-特に、セッション状態を利用した方法は、大規模なアプリケーションや他のより熟練した開発者の間で眉をひそめるでしょう。500エラーと404エラーを別々のページに分割することをお勧めします。

WebサイトがWeb経由で利用できる場合、実際のユーザーにさまざまなエラーメッセージを表示すると便利です。つまり、探しているページがなくなった場合(404)、または一時的な問題がある場合(500)、確認することをお勧めします。後で戻る。各ページのエラーに関するテキストは、それに応じてこれを反映する必要があります。また、適切なステータスコードを検索エンジンに報告して、ページが使用できなくなったかどうか、つまり、ページがプロジェクトから削除されて検索エンジンインデックスから削除する必要があるかどうか、またはエラーが発生して検索エンジンが必要かどうかを示すことも重要です。後でページをクロールするために戻り、インデックスから削除しないでください。これらのステータスコードを正しく報告しないと、検索エンジンを介してWebアプリのパフォーマンスが低下する可能性があります。通常、私のweb.configは次のようになります。

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/GenericError.aspx">
    <error statusCode="404" redirect="~/NotFound.aspx"/>
</customErrors>

注:.NET Framework内で最近発見されたセキュリティホールのため、「defaultRedirect」属性を設定することが重要です(Googleに問い合わせてください)。これを設定すると、穴を塞ぐための回避策になります。

適切なHTTPステータスコードをクライアント(および検索エンジンボット)に報告するには、以下のコードを使用できます。関連するページのページ読み込みイベントにそれらを配置するだけです。

500エラーの場合:

Response.Status = "500 Internal Server Error"

404エラーの場合:

Response.Status = "404 Not Found"

これで、Global.asaxからコードを削除し、各ページから呼び出すことができるエラー電子メールロジックの共有関数を作成できます。必要に応じて、上記のコードを既存のエラーページにマージできますが、私はそれがきれいだと思うので、常にそれらを分割することを好みます。

ページのHTTPステータスコードをテストする場合は、 Fiddlerと呼ばれる無料のアプリケーションを確認することをお勧めします。

于 2010-09-27T14:41:17.190 に答える