我对 Visual Studios 和 C# 还比较缺乏经验,所以如果没有提供必要的信息或者我的描述不清楚,请告诉我。
我在 Visual Studio 2010 Web Developer Express 中有一个 MVC 4 项目,我正在尝试设置基本的表单身份验证。我使用 ASP.NET 配置管理器设置了几个测试用户和角色。配置管理器还在我的 App_data 文件夹中创建了 ASPNETDB.MDF 数据库,该文件夹已包含在项目中。
我目前正在使用生成的 AccountController 和 Account 视图。
每当我尝试访问具有 [Authorize] 属性的 HTTPGET 或 HTTPPOST 方法时,InitializeSimpleMembershipAttribute 类中的以下方法都会引发 TargetInvocationException:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
查看异常的详细信息时,内部异常指出“无法初始化 ASP.NET 简单成员资格数据库”。
上述内部异常的内部异常表明它“找不到给定模型的概念模型类型”。
未找到的模型属于从数据库生成的 ADO.Net [.edmx] 文件。它找不到的模型是按字母顺序排列的数据库中的第一个表/类,因此它可能也适用于该数据库中的每个类。
我不确定它是否重要,但我使用与 ASPNETDB.MDF 分开的数据库来存储在网站上输入的信息。
我不明白为什么 LazyInitializer.EnsureInitialized() 方法可能会导致这个问题。