如果有人能给我一个想法,那将是很棒的。
谢谢
解决方法
如果您看到AccountController,就像@ zms6445所说,它使用InitializeSimpleMembership属性进行装饰。您可以在根目录中的Filters文件夹的InitializeSimpleMembershipAttribute.cs文件中找到此属性的实现。
在这里,这是拼图的缺失部分 – 您需要连接现有的数据库,以便它被SimpleMembershipProvider使用。这是你需要的代码:
private class SimpleMembershipInitializer { public SimpleMembershipInitializer() { try { if (!WebSecurity.Initialized) { WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME","USER_TABLE","USER_ID_FIELD","USER_NAME_FIELD",autoCreateTables: true); } } catch (Exception ex) { throw new InvalidOperationException("Something is wrong",ex); } } }
有些事情要注意:
> CONNECTION_STRING_NAME是您的web.config ConnectionStrings中的一个条目 – 您不能在此使用模型连接字符串 – SimpleMembershipProvider不会识别该格式!您需要指定一个System.Data.sqlClient连接字符串,例如
< add name =“CONNECTION_STRING_NAME”connectionString =“data source = SERVER; initial catalog = DATABASE; user id = USER; password = PASSWORD;” providerName =“System.Data.sqlClient”/>
> USER_TABLE是您的数据库中的表以容纳其他用户信息,例如名字,姓氏等。这通过USER_ID_FIELD链接到自动生成的表。
> USER_ID_FIELD通常是您的Users表的主键。它必须是int类型。
> USER_ID_NAME是用户的唯一名称,可以是电子邮件地址。
> autoCreateTables设置为true,以确保SimpleMembership工作所需的表不存在时创建。
当然,这个代码只有通过AccountController打到一个页面才被触发,因为这是由属性装饰的。你可以在那里放一个断点,看看它在行动。
这应该让你开始 – 互联网应用程序模板是一个很好的模板,如果你被卡住了。
希望这可以帮助。