从global.asax-ASP.NET标识中的Session_Start调用Membership.GetUser()



我正试图使用ASP.NET标识2.0 从global.asax中的Session_Start调用Membership.GetUser

当调用.Create()时,我在Membership.GetUser:上得到以下错误

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

其他信息:找不到存储过程"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

相关内容

  • 没有找到相关文章