【问题标题】:Call Membership.GetUser() from Session_Start in global.asax - ASP.NET identity从 global.asax 中的 Session_Start 调用 Membership.GetUser() - ASP.NET 身份
【发布时间】:2015-12-31 23:13:08
【问题描述】:

我正在尝试使用 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?

这是我的代码...

全球.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; }
        }


    }

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-identity


    【解决方案1】:

    好的,所以解决方法如下:

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

    【讨论】:

    • 更多细节会很好,但 +1 用于发布您自己的问题的解决方案。这对人们使用谷歌搜索很有帮助。
    猜你喜欢
    • 2016-05-16
    • 2014-10-16
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多