HttpContext.Current.User.IsInRole引发HttpUnhandledException。为什么?

时间:2011-11-16 13:41:20

标签: c# asp.net exception-handling httpcontext httpunhandledexception

当我在我的本地主机上工作时,它完美无缺。

但是,当我将应用程序部署到另一台服务器时,它开始引发异常。

基本上,这是导致异常的指令:

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;
    }

如果它与用户身份验证有关,我缺少什么?提前谢谢。

更新:感谢大家。我刚做了远程调试,并意识到这是实际的错误:

enter image description here

现在,情况就是这样:用户在登录页面中进行了身份验证。所以,我认为与DB的连接不是问题。否则,用户将无法将登录页面传递给MasterPage(正在引发此错误)。

我能错过什么?再次感谢,

2 个答案:

答案 0 :(得分:0)

在黑暗中进行Wild stab但内部异常可能是一个空引用异常,原因是用户未在服务器上进行身份验证,因此HttpContext.Current.User为null。我敢打赌,实时网络服务器上没有启用Windows集成身份验证或类似的身份验证设置问题。

答案 1 :(得分:0)

这个问题的解决方案是通过machine.config授予完全信任并自动生成模式来创建mysql_aspnet_membership提供程序,而不是在数据库中手动创建成员资格表,我可能已经有了一个有效的方法创建数据库。

之后,这不会再破坏了。