1

Global クラスで Application_Error を使用して 404 を処理しています。

404 がキャッチされたら、それをログに記録する目的でメールを送信します。これを行うには、静的メソッドを呼び出してエラーを書き込みます。

ErrorHandler.WriteError(Exception ex)

System.Net.Mailクラスを初期化するために、このメソッド内でEmailHandlerの新しいインスタンスを作成します。私のEmailHandlerオブジェクト内に私はプライベートメンバーを持っています

private MailMessage m_mail = null;

EmailHandlerクラスのコンストラクターで、メールを作成するために新しいMailMesageインスタンスを作成します。

public EmailHandler()
{
   m_mail = new MailMessage(); 
}

この時点で、次のエラーが表示されます。

System.Security.Cryptography.CryptographicException
"The handle is invalid."

これは、リクエストが特定のファイル ( www.mysite.com/random-incorrect-image.jpgなど) に対してのみ行われる場合にのみ発生することを指摘する必要があります。

www.mysite.com/random-incorrect-page.aspxのようなページをリクエストしているときには発生しません

4

1 に答える 1

0

静的ファイル404については、次のことを試してみてください。

web.configでカスタム404を構成します

<system.webServer>
  <httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/yourpath/yourcustom404.aspx" responseMode="ExecuteURL" />
  </httpErrors>

404静的ファイルのリダイレクトはhttp://www.mysite.com/yourpath/yourcustom404.aspx?404;http://www.mysite.com/random-incorrect-image.jpgに発生します

次に、queryStringを処理して、custom404.aspxのpageLoad内のURLを抽出し、電子メールを送信して、わかりやすいメッセージを表示できます。

aspxページでも同じことができます。web.configで:

 <customErrors mode="On">
    <error statusCode="404" redirect="/yourpath/yourcustom404.aspx" />       
</customErrors>

ただし、リダイレクトは少し異なります:

http://www.mysite.com/yourpath/yourcustom404.aspx?aspxerrorpath=/random-incorrect-page.aspx

于 2012-04-11T15:31:04.527 に答える