【问题标题】:InitializeSimpleMembershipAttribute returns TargetInvocationExceptionInitializeSimpleMembershipAttribute 返回 TargetInvocationException
【发布时间】:2013-03-06 18:36:31
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-mvc asp.net-membership forms-authentication


    【解决方案1】:

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

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

    public SomeContext(): base("MyConnectionStringName")
    {
    }
    

    【讨论】:

    • Global.asax.cs 中没有 WebSecurity.InitializeDatabaseConnection。我正在使用 edmx,所以我没有编写 dbContext。我使用的实体类中生成方法的示例与 dbContext 不同,例如 public DatabaseEntities() : base ("name=DatabaseEntities", "DatabaseEntities") { }
    • 是 DatabaseEntities 连接字符串,它指向包含 SimpleMembership 表(webpages_Membership 等)的数据库 - 正如您提到的那样,您使用两个数据库 - 它必须在一个点上,否则实体会不在那里,但也许它已经改变了?
    • 不,不是。 DatabaseEntities 连接指向一个数据库,该数据库存储在网站上输入的信息。它包含有关用户输入和修改的业务模型的信息。该数据库运行良好。但是,ASPNETDB.MDF 数据库最近由 ASP.Net 配置管理器添加,该数据库包含用户帐户数据。我的问题是,当 LazyInitializer.EnsureInitialized() 运行时(OP 中提到的那个),它无法为 DatabaseEntities db 定义的类找到“概念模型类型”。
    猜你喜欢
    • 2014-08-17
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多