ASP.Net成员登录成功,然后重定向到登录页面

时间:2010-09-07 17:16:28

标签: asp.net web-config asp.net-membership membership-provider asp.net-roles

目前我们在ASP.Net会员申请方面遇到了大量问题。

由于不相关的原因,我们使用的是MembershipProvider实现,它使用旧式Web.config指定的凭据和一个只允许所有内容的RoleProvider(RolesProvider可能是这里的问题!)。这不是我们可以改变的,因为对于我们遇到的其他一些问题来说,这是一个有点hacky的解决方法,我们只想让这个最小的案例工作。

MembershipProvider实现工作得很漂亮,当我在我的机器上测试时,一切正常。但是,当我将它推送到测试服务器时,我成功进行了身份验证(并且可以在trace log中看到cookie),然后直接反弹回登录页面,这可以从跟踪中看到这些条目日志:

19   9/7/2010 5:50:03 PM   /login.aspx     302   POST   View Details
20   9/7/2010 5:50:03 PM   /Default.aspx   302   GET    View Details
21   9/7/2010 5:50:03 PM   /login.aspx     200   GET    View Details

在代码中添加了大量跟踪功能后,我真正成功进行了身份验证:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    LoginControl.LoggedIn += new EventHandler(LoginControl_LoggedIn);
    LoginControl.LoginError += new EventHandler(LoginControl_LoginError);
}

void LoginControl_LoggedIn(object sender, EventArgs e)
{
    Trace.Write("LoginControl_LoggedIn", "Logged in successfully");
}

void LoginControl_LoginError(object sender, EventArgs e)
{
    Trace.Write("LoginControl_LoginError", "Failed to authenticate");
}

给了我:

LoginControl_LoggedIn   Logged in successfully   0.0044027241880433   0.000238

尝试在我被重定向到的Default.aspx中进行跟踪,甚至没有PreInit事件触发。

我不认为它是RoleProvider的问题,部分是因为它只是对所有事情说“是”:

public override bool IsUserInRole(string username, string roleName)
{
    return true;
}

我查看了SO:62013Forums:1318557the blog post mentioned in SO:62013,但这些都没有任何区别。

任何想法,有人吗?我完全不知所措。

2 个答案:

答案 0 :(得分:1)

您是否尝试在Visual Studio中启用.NET Framework源代码?

Tools > Options > Debugging > (uncheck) Enable Just My Code

Tools > Options > Debugging > Enable .NET Framework source stepping

然后,您必须从Microsoft符号服务器导入.NET符号,但它会引导您完成它。您至少可以通过基本角色和成员资格提供程序来查看它们是否正在进行重定向。

这不是一个真正的答案(本来希望将其留作评论,但还没有足够的代表。)

答案 1 :(得分:1)

尝试完成此处的故障排除步骤:

Troubleshoot Forms Authentication

希望你在那里找到你的问题。我目前唯一的另一个建议就是在web.config中禁用角色提供程序(如果可能的话)并尝试这种方式。