0

我对 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() 方法可能会导致这个问题。

4

1 回答 1

0

您是否检查过WebSecurity.InitializeDatabaseConnectionin使用的连接字符串Global.asax.cs Application_Start()- 这可能会导致问题。

如果命名的连接字符串是正确的,你确定 dbContext 连接字符串是正确的:

public SomeContext(): base("MyConnectionStringName")
{
}
于 2013-03-06T19:47:44.227 回答