A1。Internet 模板应在您的 web.config 中创建如下所示的条目。
<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>
这配置了 SimpleMembership 使用的角色和成员资格提供程序。当我使用 VS 2012 在我的机器上为 MVC4 创建 Internet 模板时,它们总是在那里。确保您正在查看应用程序根目录中的 web.config,而不是 Views 目录中的那个。此信息应位于根 web.config 中。如果它不存在,则需要添加它才能使 SimpleMembership 正常工作。
A2。当您将信息放入 web.config 时,其他提供程序将被覆盖,如 A1 所示。请注意,clear 元素首先用于清除任何先前定义的提供程序。
A3。InitializeSimpleMembershipAttribute装饰在您的 AccountController上以执行 SimpleMembership 的延迟初始化。仅当您尝试访问 AccountController 操作时才会调用它。例如,一旦用户登录,它将初始化数据库。这种初始化方法是为了在不使用表单身份验证的情况下,使用 Internet 模板创建的应用程序仍然可以工作。我不喜欢这种初始化方法,如果我在进行表单身份验证,我更喜欢在 Global.asax Application_Start 方法中进行。您可以在本文中阅读如何更改您的应用程序以使用此初始化。
如果您多次调用WebSecurity.InitializeDatabaseConnection,它将引发异常。将其包装在检查WebSecurity.Initialized的 if 语句中始终是一个好习惯。