使用SimpleMembershipProvider时找不到默认角色提供程序

use*_*664 9 roleprovider asp.net-mvc-4

我正在尝试使用asp.net mvc4进行授权,所以我尝试使用WebSecurity.

WebSecurity.InitializeDatabaseConnection("tradefairindia", "Users", "Id", "Username", false);
Run Code Online (Sandbox Code Playgroud)

我把它放到Global.asax中,这就是错误发生的地方,"无法找到默认角色提供程序".

在互联网上,我读到我必须将这行代码添加到我的web.config中<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">.但由于之前的错误,我已经添加了它.

我该如何解决这个问题?

编辑:

当我改变它给defaultProvider="SimpleRoleProvider"它一个新的错误.它说

命名空间'WebMatrix'中不存在类型或命名空间名称'Data'(您是否缺少程序集引用?)

use*_*664 18

我通过改变固定它defaultProviderSimpleRoleProvider.我通过添加Webmatrix.data作为参考来修复第二个错误,并转到其属性并将copy local置于true.我不知道如何解决这个问题,如果有人能详细说明那就太好了.

这是我的web.config,适用于任何碰到相同问题的人:

<system.web>
    //...
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear />
        <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
      <providers>
        <clear />
        <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
      </providers>
    </roleManager>
    //...
</system.web>
Run Code Online (Sandbox Code Playgroud)

  • 您可以选择任何名称,例如`defaultProvider ="MyRoleProvider"`,只要名称对应于`<providers>`部分中的名称.在那里你指定实际使用的库.所以在`<add name ="MyRoleProvider"type ="WebMatrix.WebData.SimpleRoleProvider,WebMatrix.WebData">`中,你说你想要使用WebMatrix.WebData库中的SimpleRoleProvider,你称之为'MyRoleProvider'.如果未将"复制本地"设置为True WebMatrix.WebData.dll将在编译时不会复制到bin文件夹中.由于默认情况下它不是GAC的一部分,因此您的程序集无法找到它. (2认同)