C# 在筛选器类中初始化SimpleMembership时出现问题
我正在尝试初始化属性类,但由于某些原因,我正在努力处理结果 我已经在visual studio 2012中创建了MVC4“基本”项目模板。我在项目中创建了带有名称过滤器的文件夹,并创建了类InitializeSimpleMembership.cs。我有主控制器和关联视图,最后我在主控制器类中调用[InitializeSimpleMembership],但没有结果。应用程序未生成所需的表。(注意:我以前创建过数据库) 我正在尝试用最少的代码初始化SimpleMemberShip,这样我就可以理解它,并使它变得复杂 在筛选器文件夹中 家庭控制器 Web.config;连接字符串C# 在筛选器类中初始化SimpleMembership时出现问题,c#,asp.net,simplemembership,C#,Asp.net,Simplemembership,我正在尝试初始化属性类,但由于某些原因,我正在努力处理结果 我已经在visual studio 2012中创建了MVC4“基本”项目模板。我在项目中创建了带有名称过滤器的文件夹,并创建了类InitializeSimpleMembership.cs。我有主控制器和关联视图,最后我在主控制器类中调用[InitializeSimpleMembership],但没有结果。应用程序未生成所需的表。(注意:我以前创建过数据库) 我正在尝试用最少的代码初始化SimpleMemberShip,这样我就可以理解它
我没有看到任何调用SimpleMembershipInitializer构造函数的内容,该构造函数具有初始化数据库的代码。为什么不将该代码放入InitializeSimpleMembership的默认构造函数中呢
我建议只将初始化放在Global.asax应用程序\u Start方法中,而不是使用过滤器类,因为您将其放在HomeController中。MVC 4 Internet模板在AccountController上使用筛选器的原因是,只有在使用安全性时,才用于延迟加载安全性。如果您总是想初始化它,只需使用Global.asax。有一个很好的描述。我没有看到任何调用SimpleMembershipInitializer的构造函数的东西,它有初始化数据库的代码。为什么不将该代码放入InitializeSimpleMembership的默认构造函数中呢
我建议只将初始化放在Global.asax应用程序\u Start方法中,而不是使用过滤器类,因为您将其放在HomeController中。MVC 4 Internet模板在AccountController上使用筛选器的原因是,只有在使用安全性时,才用于延迟加载安全性。如果您总是想初始化它,只需使用Global.asax。有一个很好的描述。是的,我意识到我没有调用构造函数。我希望继续使用过滤器名称空间,因为最终我将添加延迟加载。只是暂时尝试将事物分解成最小的部分,以便我能够理解安全行为 另外,我也缺少一些实现。。。但现在让系统运行!这里我有一个解决这个问题的方法 过滤器文件夹 } 网络配置
我在代码运行之前创建了一个数据库,因为我不希望系统在找不到数据库时创建一个数据库。虽然它是在简单成员数据库连接初始化阶段创建表。是的,我意识到我没有调用构造函数。我希望继续使用过滤器名称空间,因为最终我将添加延迟加载。只是暂时尝试将事物分解成最小的部分,以便我能够理解安全行为 另外,我也缺少一些实现。。。但现在让系统运行!这里我有一个解决这个问题的方法 过滤器文件夹 } 网络配置 我在代码运行之前创建了一个数据库,因为我不希望系统在找不到数据库时创建一个数据库。虽然它是在简单成员数据库连接初始化阶段创建表
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Threading;
using System.Web.Mvc;
using WebMatrix.WebData;
using SimpleLogin_System_04.Models;
namespace SimpleLogin_System_04.Filters
{
public class InitializeSimpleMembership : ActionFilterAttribute
{
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
try
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, ex);
}
}
}
}
}
namespace SimpleLogin_System_04.Controllers
{
[InitializeSimpleMembership]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=dd3;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\dd3.mdf" />
</connectionStrings>
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Threading;
using System.Web.Mvc;
using WebMatrix.WebData;
using SimpleLogin_System_04.Models;
namespace SimpleLogin_System_04.Filters
{
public class InitializeSimpleMembership : ActionFilterAttribute
{
public InitializeSimpleMembership()
{
try
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
}
}
}
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DB4;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\DB4.mdf" />
</connectionStrings>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/>
</providers>
</membership>
<roleManager enabled="true">
<providers>
<add name="DefaultRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller