您好我正在尝试重定向,如果响应是404,但它没有按预期工作,您可以专家看到问题吗?它仍然是通用的404
在我的Global.asax
中protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (Response.Status == "404 Not Found")
{
string notFound = "~/custom_notfound.aspx";
Response.Redirect(notFound);
}
}
更新
到目前为止已经尝试了
(Response.Status == "404 Not Found")
(Response.Status == "404")
(Response.StatusCode == 404)
答案 0 :(得分:8)
您还可以使用web.config customerrors部分 - as shown here
e.g。在system.web部分中,
<customErrors mode="On" defaultRedirect="/custom_error.aspx">
<error statusCode="404" redirect="/custom_notfound.aspx" />
</customErrors>
答案 1 :(得分:3)
我认为BeginRequest不会知道404错误。尝试实现Application_Error。检查Server.GetLastError()是否是HttpException,如果是,请检查状态。
答案 2 :(得分:2)
您可以添加到web.config进行此重定向,您无需使用Application_BeginRequest
来处理此问题。
请参阅此ServerFault question。
如果您不能使用web.config,那么我会将您的启动页面设置为不存在的页面,在BeginRequest中放置一个断点,调试应用程序并查看请求以查看如何确定它是404.这将更容易确定最佳解决方案。
再看一下,HttpWebResponse类中使用了HttpStatusCode。因此,使用Application的不同覆盖来获取默认响应,然后根据Enum检查它的状态可能是有意义的。
答案 3 :(得分:0)
您也可以使用web.config
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="File" >
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" path="404.html" />
<error statusCode="500" path="500.html" />
</httpErrors>
</system.webServer>