![](/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.