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

9

我正在尝试在asp.net mvc4上实现授权,因此我尝试使用WebSecurity。

WebSecurity.InitializeDatabaseConnection("tradefairindia", "Users", "Id", "Username", false);

我已经将它放入Global.asax中,但是出现了错误:“找不到默认角色提供程序(Default Role Provider could not be found)”。
在互联网上,我读到需要在我的web.config文件中添加以下代码:<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">。但由于之前的错误,我已经添加了它。
如何解决这个问题?
编辑:
当我将其更改为defaultProvider="SimpleRoleProvider"时,它会给我一个新的错误。它说:

The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' (are you missing an assembly reference?)

1个回答

19

我通过将defaultProvider更改为SimpleRoleProvider来解决了第一个错误。我通过将Webmatrix.data添加为参考,并且进入其属性并将复制本地设置为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>

1
不要忘记接受自己的答案。这会对很多人有所帮助。 - Erik Philips
3
你可以选择任何名称,例如 defaultProvider="MyRoleProvider",只要该名称对应于 <providers> 部分中的一个名称。在那里,你需要指定实际使用的库。所以在 <add name="MyRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"> 中,你表明要使用来自 WebMatrix.WebData 库的 SimpleRoleProvider,并将其命名为'MyRoleProvider'。如果你不将 "Copy Local" 设置为 True,则在编译时 WebMatrix.WebData.dll 不会被复制到 bin 文件夹中。因为它默认不是 GAC 的一部分,所以你的程序集找不到它。 - flip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接