3

Entity Frame]workでmvc Webアプリを開発しています。各更新でいくつかのシード データを追加できるように、データベースの移行を有効にしました。具体的には、2 人のユーザーと 2 つの役割を追加したいと考えています。したがって、構成ファイルは次のようになります。

        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'.

これは設定の問題かもしれないと思いますが、よくわかりません。誰かが同じ問題に遭遇しましたか?

4

3 に答える 3

4

これを整理しました。問題は明らかに Web 構成に関連していました。次の行を web.config ファイルに追加しました。

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
  </providers>
</roleManager>

ロール プロバイダーを明示的に設定します。これRoles.Providerで、WebMatrix.WebData.SimpleRoleProvider のインスタンスが返されます。したがって、これ以上キャストする必要はありません

于 2013-08-09T11:04:42.077 に答える
1

以下のコードを 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>
于 2015-09-22T14:33:07.590 に答える