0

提前感谢您抽出宝贵时间提供帮助。

我的目标是,当有人登录我正在构建的网站的首页时,他们会被转发到另一个页面(人们在手动登录后转到的同一页面)

这是我的代码:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated) 
        {
            Response.Redirect("~/inside.aspx");
        }
    }
}

inside.aspx 的 c# 代码当前为空。但是,如果用户已登录,我在浏览器中会收到重定向循环错误。我不确定为什么。

接下来是我的 web.config:

<configuration>
  <system.web>
    <!--<roleManager enabled="true" />-->
    <authentication mode="Forms">
      <forms loginUrl="default.aspx" defaultUrl="inside.aspx" />
    </authentication>
    <compilation debug="true" targetFramework="4.0"/>
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices"/>
      </providers>
    </sessionState>
    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
      </providers>
    </membership>
  </system.web>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="Data Source=SERVERNAME;Initial Catalog=SCRUMAPIUI;User Id=tunnelld;Password=PASSWORD;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

我究竟做错了什么?为什么我会收到重定向循环?如果用户已登录,如何让我的网站的默认页面正确转发到另一个页面?

编辑:

这是 Chrome 中显示的错误:

在此处输入图像描述

4

3 回答 3

2

我看到的循环是:

  • 一个人去 Default.aspx 并且他们已经“登录”。
  • 您的代码将它们重定向到 inside.aspx
  • 在传输过程中,他们失去了身份验证(这可能是也可能不是由于浏览器)。
  • 您的 web.config 注意到它们位于内部页面中,但未经过身份验证!
  • 您的 web.config 将它们推回 Default.aspx,无论出于何种原因,您仍然在其中通过身份验证。
  • 您的代码将它们重定向到 inside.aspx。

等等

作为一种好的做法,请确保经过身份验证的用户不是匿名用户。这可能是让你绊倒的原因。

您是否有机会使用 IE 10 进行测试?

于 2013-06-24T14:02:57.553 回答
1

尝试将此添加到 webconfig 的配置部分。

<location path="default.aspx">
  <system.web>
    <authorization>
        <allow users ="*" />
    </authorization>
  </system.web>
</location>

并将其添加到您现有的结束标签下方</authentication>,以防止访问任何其他页面,除非经过身份验证。

<authorization>
  <deny users="?" /> 
</authorization>
于 2013-06-24T14:44:23.757 回答
0

问题是这两个文件的 CodeFile 引用是相同的。愚蠢的错误,但如果你有这个问题,一定要检查一下!

于 2013-06-24T16:26:45.507 回答