错误重定向不重定向

时间:2013-12-16 14:20:15

标签: c# asp.net redirect

当我运行我的某个页面并且有人将网址更改为不存在的网页时,我希望它们重定向到我的登录页面。在互联网上,我找到了以下代码,我把它放在我的Web.config文件中:

      <customErrors mode="On"
              defaultRedirect="~/ErrorPages/Login.aspx" />  

我把它放在这里:

    <system.web>
    </sytem.web>

然而,这对我不起作用,我仍然可以看到这个:

enter image description here

我尝试将模式从开启更改为仅限远程,反之亦然,但这并没有帮助。我还尝试将defaultRedirect从〜/ ErrorPages / Login.aspx更改为〜/ Login.aspx,但这也无效。有人可以帮我从这里出去吗?提前谢谢。

修改

Login.aspx页面位于名为Pages的子文件夹中。不幸的是:〜/ Pages / Login.aspx无法正常工作

2 个答案:

答案 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放在错误页面上以重定向到登录页面。