我正试图使用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所以解决方案如下:
- 在SQL Express中的App_Data中附加数据库
- 从VS命令提示符运行aspnet_regsql