繁体   English   中英

在global.asax中从Session_Start调用Membership.GetUser()-ASP.NET身份

[英]Call Membership.GetUser() from Session_Start in global.asax - ASP.NET identity

我正在尝试使用ASP.NET Identity 2.0从global.asax中的Session_Start调用Membership.GetUser

调用.Create()时,我在Membership.GetUser中得到以下错误信息:

System.Web.dll中发生类型'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理

附加信息:找不到存储过程'dbo.aspnet_CheckSchemaVersion'。

我怀疑这与OWIN尚未初始化有关吗? 有谁知道是否有可能从application_start获取当前的GUID?

这是我的代码...

Global.asax

    protected void Session_Start(Object sender, EventArgs e)
    {

        SessionData.Create();
    }

会话数据:

 public class SessionData
    {

        public static void Create()
        {
            using (var db = new BeatBoxV2Context())
            {

                var membershipUser = Membership.GetUser();
                var providerUserKey = membershipUser?.ProviderUserKey;

                if (providerUserKey == null) return;
                var guid = (Guid)providerUserKey;

                var account = db.Account.Find(guid);

                var sessionData = new SessionData
                {
                    UserPermissions= db.Permissions.Where(h => h.Guid == guid).ToList()
                };
            }
        }



        public List<Permissions> UserPermissions
        {
            get { return HttpContext.Current.Session["UserPermissions"] != null ? (List<HolterPermission>)HttpContext.Current.Session["UserPermissions"] : null; }
            set { HttpContext.Current.Session["UserPermissions"] = value; }
        }


    }

OK,解决方法如下:

  1. 将数据库附加到SQL Express中的App_Data中
  2. 从VS命令提示符运行aspnet_regsql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM