Asp.net mvc 4 ASP.NET MVC 4 Web安全种子

Asp.net mvc 4 ASP.NET MVC 4 Web安全种子,asp.net-mvc-4,dbcontext,Asp.net Mvc 4,Dbcontext,我有一些简单的DbContext: public class AuthContext : DbContext { public AuthContext() : base("AuthContext") { } public DbSet<User> Users { get; set; } } 我需要的是始终或在创建模型之后将数据种子植入WebSecurity。我试过: Database.SetInitializer(new AuthDbSeed

我有一些简单的DbContext:

public class AuthContext : DbContext
{
    public AuthContext() : base("AuthContext")
    {
    }

    public DbSet<User> Users { get; set; }
}
我需要的是始终或在创建模型之后将数据种子植入WebSecurity。我试过:

    Database.SetInitializer(new AuthDbSeeder());
//--------------------------------------------------------

    <add name="AuthContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=ChatAuth; Integrated Security=SSPI; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
public class AuthDbSeeder : DropCreateDatabaseAlways<AuthContext>
{
    protected override void Seed(AuthContext context)
    {       
        WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
                                                         autoCreateTables: true);
        WebSecurity.CreateUserAndAccount("Sergey", "1234");

中,我添加了:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

//--------------------------------------------------------

    <add name="AuthContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=ChatAuth; Integrated Security=SSPI; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
public class AuthDbSeeder : DropCreateDatabaseAlways<AuthContext>
{
    protected override void Seed(AuthContext context)
    {       
        WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
                                                         autoCreateTables: true);
        WebSecurity.CreateUserAndAccount("Sergey", "1234");
公共类AuthDbSeeder:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(AuthContext上下文)
{       
WebSecurity.InitializeDatabaseConnection(“AuthContext”、“User”、“UserId”、“Login”,
自动创建表:true);
WebSecurity.CreateUserAndAccount(“Sergey”、“1234”);
但毕竟我有一个错误,数据库不能被删除,因为它已经在使用中。我需要一些工作方法来将数据种子植入Web安全。 对我来说,另一个非常重要的问题是:如何在同一DbContext中添加自定义模型,并将种子数据正确地添加到此上下文中


还有什么办法可以对Web安全性进行单元测试吗?

我已经找到了种子问题的解决方案

我修改了SimpleMembershipInitializer:

        private class SimpleMembershipInitializer
        {
            public SimpleMembershipInitializer()
            {
                try
                {
                    WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
                                                             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);
                }
            }
        }
在我的seed方法调用中

 public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        LazyInitializer.EnsureInitialized(ref initializer, ref isInitialized, ref initializerLock);
    }
使用null作为参数

单元测试仍然是一个问题

存在一个问题