相关疑难解决方法(0)

ASP.NET MVC 4,"WebSecurity.InitializeDatabaseConnection"方法只能调用一次

我正在开发Visual Studio 2012 Express中的代码第一个Web应用程序.

我在web.config中使用此连接字符串:

<add name="myContext" connectionString="Data Source=.;Integrated Security=True;Initial Catalog=cityKingMVC4" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

我正在使用SimpleMembership.

我试图从Filters/InitializeSimpleMembershipAttribute.cs中为1个管理员提供种子:...

WebSecurity.InitializeDatabaseConnection("myContext", "Users", "UserId", "Email", autoCreateTables: true);

// A: Create Admin user
if (!WebSecurity.ConfirmAccount("admin@mydom.com"))
{
   WebSecurity.CreateUserAndAccount("admin@mydom.com", "password");
}

// B: Create admin role if not exist
if (!Roles.RoleExists("Administrator"))
{
   Roles.CreateRole("Administrator");
   Roles.AddUserToRole("admin@mydom.com", "Administrator");
}
Run Code Online (Sandbox Code Playgroud)

如果我评论A&B它不会崩溃.如果我不这样做:"WebSecurity.InitializeDatabaseConnection"方法只能被调用一次.

如果我调试并在'WebSecurity.InitializeDatabaseConnection'上放置一个断点 - 它只调用一次,并且没有其他代码在任何地方调用WebSecurity.InitializeDatabaseConnection.

如果我调试 - 它在文件中较高的另一行崩溃(标准的SimpleAuthentication文件):LazyInitializer.EnsureInitialized(ref _initializer,ref _isInitialized,ref _initializerLock);

出现此错误:调用目标引发了异常.

堆栈跟踪:

[InvalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once.]
   WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables) …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-mvc-4 simplemembership

7
推荐指数
2
解决办法
3万
查看次数