1

目前,我们在使用 ASP.Net Membership 应用程序时遇到了很多问题。

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

MembershipProvider 实现运行良好,当我在我的机器上测试它时一切正常。但是,当我将其推送到测试服务器时,我成功进行了身份验证(并且可以在跟踪日志中看到 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:1318557SO:62013 中提到的博客文章,这些都没有任何区别。

有什么想法,有人吗?我完全不知所措。

4

2 回答 2

1

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

表单身份验证疑难解答

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

于 2010-10-11T13:13:04.247 回答
1

您是否尝试过在 Visual Studio 中启用 .NET Framework 源代码单步执行?

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

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

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

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

于 2010-09-13T10:39:03.897 回答