我正在开发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)