我正在使用全局类中的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这样的页面时,不会发生
发布于 2012-04-11 15:31:04
也许您应该对静态文件404尝试以下操作:
在web.config中配置自定义404
<system.webServer>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/yourpath/yourcustom404.aspx" responseMode="ExecuteURL" />
</httpErrors>然后,http://www.mysite.com/yourpath/yourcustom404.aspx?404;http://www.mysite.com/random-incorrect-image.jpg将发生对静态文件的404重定向。
然后,您可以处理queryString,提取定制404.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
https://stackoverflow.com/questions/10104231
复制相似问题