![](/img/trans.png)
[英]Unable to cast object of type 'System.String' to type 'System.Byte[]'. Why?
[英]Unable to cast object of type 'System.Web.Security.SqlRoleProvider' to type 'WebMatrix.WebData.SimpleRoleProvider'
我开发了一个带有Entity Frame的mvc web应用程序。 我已启用数据库迁移,以便我可以在每次更新时添加一些种子数据。 更具体地说,我想添加两个用户和两个角色; 所以配置文件看起来像这样:
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");
}
但是在铸造期间似乎存在问题; 它引发了一个例外
Unable to cast object of type 'System.Web.Security.SqlRoleProvider' to type 'WebMatrix.WebData.SimpleRoleProvider'.
我怀疑这可能是配置问题,但我不确定。 有没有人偶然发现同样的问题?
那是因为SqlRoleProvider
不继承SimpleRoleProvider
。 但是,您可以尝试使用SimpleRoleProvider
构造函数( RoleProvider
) :
var roles = new SimpleRoleProvider(Roles.Provider);
我整理了这个。 问题显然与网络配置有关。 我在web.config文件中添加了以下行:
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
显式设置角色提供程序。 所以现在Roles.Provider
返回一个WebMatrix.WebData.SimpleRoleProvider实例; 因此我不需要再施展
我通过在web.config之间放置代码来解决这个问题
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.