2012-01-18 9 views
1

メンバーシップクラスの操作方法について学習しています。ASP.Netのメンバーシップ:別のデータベースに保存されたロール

aspnet_regsql.exeを使用してメンバーシップデータベースを自分のWebサイトのSQLデータベースに追加しました。これまでのところ問題なくユーザーを追加して追加できます。しかし、私はASP.Net構成ツールを使用していくつかの役割を追加することにしました。ロールは追加されましたが、SQLデータベースのaspnet_Rolesテーブルには表示されませんでした。

私はそれ以来、問題のWebサイトのVS2010 App_DataフォルダにASPNETDB.MDFを認識しており、そこにロールが表示されています。ユーザーは、そのデータベースに含まれていないが、私のweb.configファイルで構成されたSQL DBにあります。ユーザーが保存できる場合

<configuration> 
    <connectionStrings> 
     <add name="myConnString" connectionString="Data Source=SQLDB;Initial Catalog=myDatabase;User ID=myUser;Password=myPassword" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
     <authentication mode="Forms" /> 
     <compilation debug="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </assemblies> 
     </compilation> 
     <machineKey validationKey="LOTSOFNUMBERS" 
     decryptionKey="MORENUMBERS" validation="SHA1" decryption="AES"/> 
     <membership defaultProvider="SqlProvider"> 
      <providers> 
       <clear/> 
       <add name="SqlProvider" 
       connectionStringName="myConnString" 
       type="System.Web.Security.SqlMembershipProvider" 
       applicationName="myApp" 
       requiresUniqueEmail="true" 
       minRequiredPasswordLength="8" 
       minRequiredNonalphanumericCharacters="0" 
       requiresQuestionAndAnswer="false" 
       passwordFormat="Encrypted" 
       enablePasswordRetrieval="true" 
       /> 
      </providers> 
     </membership> 
     <roleManager enabled="true" /> 
     <pages theme="myTheme"> 
     </pages> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</configuration> 

、修正してから、私のデータベースにASP.Net設定ツールを使用して削除しました私はロールが同じことをすると期待していたでしょうか?何が足りないの?

+0

MemberProviderと同じデータソースを使用するには、web.configでRoleProviderを設定する必要があります。 –

答えて

4

あなたはroleManagerが欠落しているように、ロールプロバイダの構成を設定する必要があります。次に例を示します。

<roleManager enabled="true"> 
    <providers> 
     <clear /> 
     <add connectionStringName="myConnString" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> 
     <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 
+0

ありがとうございました。トップの答え!私は一歩足を踏み入れただけではなく、階段を飛び回った! – ComfortablyNumb

5

は、あなたのメンバシッププロバイダ

<roleManager enabled="true" defaultProvider="TheRoleProvider"> 
<providers> 
    <clear/> 
    <add name="TheRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="myConnString" 
     applicationName="/"/> 
</providers> 
</roleManager>