我正在尝试使用ASP.NET identity 2.0从global.asax中的Session_Start调用Membership.GetUser
当调用.Create()时,我在Membership.GetUser上获得以下erorr:
发生了'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();
}
SessionData:
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; }
}
}
答案 0 :(得分:1)
好的所以解决方案如下: