当我运行我的某个页面并且有人将网址更改为不存在的网页时,我希望它们重定向到我的登录页面。在互联网上,我找到了以下代码,我把它放在我的Web.config文件中:
<customErrors mode="On"
defaultRedirect="~/ErrorPages/Login.aspx" />
我把它放在这里:
<system.web>
</sytem.web>
然而,这对我不起作用,我仍然可以看到这个:
我尝试将模式从开启更改为仅限远程,反之亦然,但这并没有帮助。我还尝试将defaultRedirect从〜/ ErrorPages / Login.aspx更改为〜/ Login.aspx,但这也无效。有人可以帮我从这里出去吗?提前谢谢。
修改
Login.aspx页面位于名为Pages的子文件夹中。不幸的是:〜/ Pages / Login.aspx无法正常工作
答案 0 :(得分:2)
<configuration>
<system.web>
<compilation targetFramework="4.0" />
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="login.aspx" />
</customErrors>
</system.web>
更新:
Global.asax
文件中定义的错误处理程序仅捕获ASP.NET
运行时处理请求期间发生的错误。例如,如果用户请求您的应用程序中没有出现的.aspx文件,它将捕获错误。但是,如果用户请求不存在.htm file
,则不会捕获错误。对于nonASP.NET错误,您可以在Internet信息服务(IIS)中创建custom handler
。也不会为服务器级错误调用自定义处理程序。
- MSDN
您还可以在global.asax Application_Error event
中处理此错误。
protected void Application_Error(Object sender, EventArgs e)
{
HttpException serverError = Server.GetLastError() as HttpException;
if (null != serverError)
{
int errorCode = serverError.GetHttpCode();
if (404 == errorCode)
{
Server.ClearError();
Server.Transfer("Your virtual path");
}
}
}
答案 1 :(得分:0)
不确定您的错误,但它应该如下所示:
<system.web>
<customErrors mode="On" defaultRedirect="~/ErrorPages/YourErrorPage.aspx">
<error statusCode="404" redirect="~/ErrorPages/YourErrorPage.aspx" />
<error statusCode="500" redirect="~/ErrorPages/YourErrorPage.aspx" />
</customErrors>
..........
.........
</sytem.web>
如果出现错误,我不会指向登录页面,因为如果您在此类页面上出现错误,则永远不会出现问题。而是将linkLabel放在错误页面上以重定向到登录页面。