重定向到自定义禁止页面无法在asp.net中运行

时间:2013-02-15 19:49:53

标签: c# asp.net authentication

我有一个公共(无身份验证)网站,但需要身份验证的一个页面除外。这很好。

受保护的页面位于包含以下web.config的文件夹中:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Warehouse" />
            <deny users="*" />
        </authorization>

        <customErrors mode="RemoteOnly" defaultRedirect="../WebForbidden.aspx">
            <!--<error statusCode="403" redirect="WebForbidden.aspx" />
            <error statusCode="404" redirect="FileNotFound.htm" />-->
        </customErrors>

    </system.web>
</configuration>

该页面的主文件包含以下内容:

protected void Page_Init(object sender, EventArgs e)
    {
        CheckLogged();
    }

    public bool CheckLogged()
    {
        bool status = false;

        if (Session["Username"] == null)
        {
            FormsAuthentication.SignOut();
            Response.Redirect("../WebForbidden.aspx");
            //FormsAuthentication.RedirectToLoginPage();
        }
        else
        {
            status = true;
        }

        return status;
    }

我在网站的根目录中有WebForbidden.aspx页面。

现在,每次我尝试直接进入受保护的页面(除非经过身份验证都禁止),而不是显示“禁止访问”页面,会显示错误:The resource cannot be found,当然网站正在尝试重定向到登录页面,不存在。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试告诉表单身份验证重定向到WebForbidden.aspx,而不是让它使用默认值,如果您没有指定,则会查找Login.aspx

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="WebForbidden.aspx" />
    </authentication>
</system.web>