2017-01-12 6 views
3

メンバーシップシステムにASP.Net、System.Web.Security、およびWebMatrix.WebDataを使用する既存のプロジェクトがあります。このアプリケーションでは、すべてのユーザーが作成され、更新され、データベースに格納されます。WebMatrix.WebDataは、別のASP.NETアプリケーションからメンバーシップ情報を読み取ることができません。

私は別のアプリケーションも持っています。これは単純なAzureワーカーロールです。メンバーシップ情報の一部をデータベースから読み込む必要があります。たとえば、特定のユーザーがどのような役割を持っているかを確認する必要があります。以下のサンプルプログラムでは、「管理者」、「アカウントマネージャー」などのさまざまな役割を示し、特定のユーザーにはその役割を関連付けます。私は今、問題は私の第二のアプリケーションが最初の1で作成したロールのいずれかを見ることができない、ある

をデータベースでチェックしている、との関連はすべてなど「webpages_Membership」テーブルに正しく保存されています。私は、関連する設定の多くを最初のプロジェクトから2番目のプロジェクトにコピーしようとしました。 WebMatrix.WebDataはパッケージとして廃止されましたが、それはMicrosoft.AspNet.WebPages.WebDataに含まれています。私はちょうど2つのプロジェクト間ですべて同じものを維持しようとしています。

public static void Main() 
{ 
    if (!WebSecurity.Initialized) 
    { 
     Console.WriteLine("Initializing WebSecurity"); 
     WebSecurity.InitializeDatabaseConnection("CustomDbContext", "UserProfile", "Id", "Username", autoCreateTables: false); 
    } 

    using (var db = new CustomDbContext()) 
    { 
     Console.WriteLine("All Roles : {0}", Roles.GetAllRoles().ToString()); 

     foreach (var user in db.UserProfiles) 
     { 
      Console.WriteLine("User  : {0}", user.UserName); 
      Console.WriteLine(" Roles : {0}", Roles.GetRolesForUser(user.UserName).ToString()); 
     } 
    } 

    Console.Read(); 
} 

Packages.config:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="EntityFramework" version="6.1.3" targetFramework="net461" /> 
    <package id="Microsoft.AspNet.WebPages.Data" version="2.0.20710.0" targetFramework="net461" /> 
    <package id="Microsoft.AspNet.WebPages.WebData" version="2.0.20710.0" targetFramework="net461" /> 
    <package id="CustomDataModels" version="1.0.0" targetFramework="net461" /> 
    <package id="WebMatrix.WebData" version="2.0.30506.0" targetFramework="net461" /> 
</packages> 

App.configファイル:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> 
    </startup> 
    <connectionStrings> 
    <add name="CustomDbContext" connectionString="XXX" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <machineKey validationKey="XXX" decryptionKey="XXX" validation="SHA1" decryption="AES" /> 
    <roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
     <providers> 
     <clear /> 
     <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
     </providers> 
    </roleManager> 
    <membership defaultProvider="SimpleMembershipProvider"> 
     <providers> 
     <clear /> 
     <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
     </providers> 
    </membership> 
    </system.web> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

答えて

1

まあ、これは恥ずかしいです。私は、デバッガで配列の内容を検査して、この時点で

<system.web> 
    <roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
     <clear /> 
     <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
    </providers> 
    </roleManager> 
    <membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
     <clear /> 
     <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
    </membership> 
</system.web> 

、および空のそれらを見て:最初は、私はApp.configファイルから構成セクションがありませんでした。しかし、私がそのセクションを追加した後、私はコンソールを読むだけで、出力を変更しなかった理由を理解できませんでした。

Console.WriteLine("All Roles : {0}", Roles.GetAllRoles().ToString()); 

スポットが間違っていますか? 私は出力を変更すると予想して、すべての変更後に出力を簡単に見てきましたが、実際の内容の代わりに配列参照を見ていました。

関連する問題