我捕获了网站上的所有错误,并根据某些信息生成电子邮件。我在Global.asax
的{{1}}中执行此操作。我已经实现了一些代码来捕获Application_Error
错误,此时它将执行以下操作:
404
Redir将会像Server.ClearError();
string Redir = Settings["Custom404Page"];
Server.Transfer(Redir);
一样出现,但当我将其传递给PageContent/123/404_Not_Found.html
时,我收到了错误消息:
Server.Transfer
我不想使用Error executing child request for PageContent/123/404_Not_Found.html
,因为我需要确保维护Response.Redirect
的状态代码,而使用404
时似乎不会这样。
有没有人有解决方案?我可以这样使用Response.Redirect
吗?
答案 0 :(得分:1)
您无法将Server.Transfer
指向静态页面。您需要将其指向.aspx
页面以使其正常工作。
如果您确实想要使用HTML页面,则需要打开HTML文件,读取其内容,对其进行缓存并使用Response.Write
输出,同时保留404响应标题。
请参阅:http://support.microsoft.com/kb/320439
Microsoft Internet信息服务(IIS)发送 Server.Transfer或Server.Execute请求到相应的 Internet服务器应用程序编程接口(ISAPI)扩展 基于请求文件的扩展名。例如,一个请求 将.aspx页面分派给Aspnet_isapi.dll ISAPI 扩展
将请求分派到适当的ISAPI扩展后, ISAPI扩展无法调用另一个ISAPI扩展。你收到了 由于“症状”部分中列出的错误消息 处理对ASP.NET页面的请求的Aspnet_isapi.dll文件不能 将请求转发到Asp.dll文件,该文件处理对ASP的请求 页。