SimplerMembership中的角色提供者

时间:2013-10-14 05:20:03

标签: simplemembership

我在.NET Framework 4项目中使用了标准的VS 2012 MVC 4 Internet模板。我主要使用外部登录(Google,Microsoft,Facebook,Yahoo,Twitter)访问我的应用程序中使用[Authorize]属性修饰的部分。

[我注意到的一件事是VS创建的默认web.config不包含任何关于成员资格或角色提供程序的部分,这与我在ASP.NET Web表单应用程序中看到的部分不同。]

我将项目部署到azurewebsites.net网站。最初的事情很好,但在一些使用之后,应用程序将抛出异​​常,因为它试图使用服务器的机器配置文件来使用名为SqlMembershipProvider的连接字符串来访问LocalSqlServer

Q1:SqlMembershipProvider如何与SimpleMembership提供商相关?

无论如何,我创建了一个< membership> web.config中的部分并添加了< clear />。这解决了这个问题,但又造成了另一个问题,因为它现在再次使用连接字符串SqlRoleProvider尝试访问machine.config中的LocalSqlServer!我试图添加一个< roleManager> < clear />部分到我的web.config,但我没那么成功。它坚持要包含defaultProvider。我该怎么办?

Q2。在.NET Framework 4.0 MVC 4应用程序中用于SimpleMembership角色提供程序的程序集是什么?

我试过了:

System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

但它造成了另一个问题,即Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'。在我运行aspnet_regsql.exe之前,我想问一下:

问题3:为什么标准应用程序在一段时间内正常运行,然后开始寻找SqlMembershipProvider和SqlRoleProvider?

是否有人在玩服务器上的设置?

1 个答案:

答案 0 :(得分:2)

以下是使用SimpleMembership时的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角色提供程序的程序集是WebMatrix.WebData。

SqlMembershipProvider与SimpleMembership无关,只是它们都是成员资格提供者。我的猜测是,如果未正确配置SimpleMembership,则默认为SqlMembershipProvider。

在应用程序的某个位置,您需要通过调用WebSecurity.InitializeDatabaseConnection来初始化SimpleMembership的数据库。此方法中的第一个参数指示要使用的连接字符串。如果应用程序是使用MVC4 Internet模板创建的,则此方法将在过滤器 InitializeSimpleMembershipAttribute 中调用,该过滤器在帐户控制器上进行修饰。如果您需要自己添加对InitializeDatabaseConnection方法的调用,我只需将它放在Gloaba.asax Application_Start方法中。

相关问题