0

我想在使用 VS 2012 Internet 模板的 ASP.NET MVC 4 Web 应用程序的上下文中了解有关 SimpleMembershipProvider 的更多信息。

Q1。 模块在哪里配置?在 ASP.NET web 表单版本中,可以在 web.config 中看到。在 MVC 4 版本中,默认的 web.config 没有对成员资格提供程序的任何引用。

Q2。 在 machine.config 中,有一个已配置的 SqlMembershipProvider。在哪里/何时被覆盖?

Q3。SimpleMembershipInitializer()要调用 什么触发器?它不在 Globals.asax 中。当我有一个已经登录的用户并重新启动 Web 应用程序时(或者如果 azurewebsites 在休眠一段时间后唤醒应用程序),用户将遇到麻烦

在调用“WebSecurity”类的任何其他方法之前,您必须调用“WebSecurity.InitializeDatabaseConnection”方法

当他下次点击我网站上的链接时。可以多次调用此方法吗?

4

1 回答 1

0

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 语句中始终是一个好习惯。

于 2013-10-15T14:52:28.817 回答