当我在我的本地主机上工作时,它完美无缺。
但是,当我将应用程序部署到另一台服务器时,它开始引发异常。
基本上,这是导致异常的指令:
HttpContext.Current.User.IsInRole(*roleName*)
其中 roleName 是表示应用程序中不同角色的字符串。
触发了异常:
System.Web.HttpUnhandledException
更新:这是用户的身份验证方式。
protected void LoginControl_Authenticate(object sender, AuthenticateEventArgs e)
{
Page.Validate();
if (!Page.IsValid) return;
if (MyAuthenticate(LoginControl.UserName, LoginControl.Password))
{
if (LoginControl.RememberMeSet == true)
{
createCookie(LoginControl.UserName, Convert.ToInt32(ViewState["idcustomer"]), true);
}
else
{
createCookie(LoginControl.UserName, Convert.ToInt32(ViewState["idcustomer"]), false);
}
e.Authenticated = true;
Response.Redirect(FormsAuthentication.GetRedirectUrl(LoginControl.UserName, true));
}
else
{
e.Authenticated = false;
}
如果它与用户身份验证有关,我缺少什么?提前谢谢。
更新:感谢大家。我刚做了远程调试,并意识到这是实际的错误:
现在,情况就是这样:用户在登录页面中进行了身份验证。所以,我认为与DB的连接不是问题。否则,用户将无法将登录页面传递给MasterPage(正在引发此错误)。
我能错过什么?再次感谢,
答案 0 :(得分:0)
在黑暗中进行Wild stab但内部异常可能是一个空引用异常,原因是用户未在服务器上进行身份验证,因此HttpContext.Current.User为null。我敢打赌,实时网络服务器上没有启用Windows集成身份验证或类似的身份验证设置问题。
答案 1 :(得分:0)
这个问题的解决方案是通过machine.config授予完全信任并自动生成模式来创建mysql_aspnet_membership提供程序,而不是在数据库中手动创建成员资格表,我可能已经有了一个有效的方法创建数据库。
之后,这不会再破坏了。