首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将“System.Web.Security.SqlRoleProvider”类型的对象强制转换为“WebMatrix.WebData.SimpleRoleProvider”类型

无法将“System.Web.Security.SqlRoleProvider”类型的对象强制转换为“WebMatrix.WebData.SimpleRoleProvider”类型
EN

Stack Overflow用户
提问于 2013-08-09 09:15:19
回答 3查看 1.9K关注 0票数 3

我开发了一个带有实体框架的mvc web应用程序。我启用了数据库迁移,以便在每次更新中添加一些种子数据。更具体地说,我希望添加两个用户和两个角色;因此配置文件如下所示:

代码语言:javascript
复制
        var roles = (SimpleRoleProvider)Roles.Provider;
        var membership = (SimpleMembershipProvider)Membership.Provider;

        //// create two roles 
        if (!roles.RoleExists("Admin"))
        {
            roles.CreateRole("Admin");
        }
        if (!roles.RoleExists("User"))
        {
            roles.CreateRole("User");
        }

然而,在铸造过程中似乎出现了一个问题,它会抛出一个异常。

代码语言:javascript
复制
 Unable to cast object of type 'System.Web.Security.SqlRoleProvider' to type 'WebMatrix.WebData.SimpleRoleProvider'.

我怀疑这可能是一个配置问题,但我不太确定。有没有人偶然发现同样的问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-09 11:04:42

我解决了这个问题。这个问题显然与网络配置有关。我在web.config文件中添加了以下行:

代码语言:javascript
复制
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
  </providers>
</roleManager>

若要显式设置角色提供程序,请执行以下操作。因此,现在Roles.Provider返回WebMatrix.WebData.SimpleRoleProvider的一个实例;因此,我不需要再进行强制转换

票数 4
EN

Stack Overflow用户

发布于 2013-08-09 09:18:22

这是因为SqlRoleProvider不继承SimpleRoleProvider。但是,您可以尝试使用)

代码语言:javascript
复制
var roles = new SimpleRoleProvider(Roles.Provider);
票数 5
EN

Stack Overflow用户

发布于 2015-09-22 14:33:07

我通过在web.config中放置下面的代码来解决这个问题

代码语言:javascript
复制
<roleManager enabled="true" defaultProvider="simple">
  <providers>
    <clear />
    <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
  </providers>
</roleManager>
<membership defaultProvider="simple">
  <providers>
    <clear />
    <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18143329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档