目前我们在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:62013,Forums:1318557和the blog post mentioned in SO:62013,但这些都没有任何区别。
任何想法,有人吗?我完全不知所措。
答案 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中禁用角色提供程序(如果可能的话)并尝试这种方式。