簡體   English   中英

WebMatrix.WebData無法從單獨的ASP.NET應用程序中讀取成員資格信息

[英]WebMatrix.WebData can't read membership information from a separate ASP.NET application

我有一個現有項目,它使用ASP.Net,System.Web.Security和WebMatrix.WebData作為成員資格系統。 此應用程序是創建,更新等所有用戶並存儲到數據庫的地方。

我還有一個單獨的應用程序,它只是一個普通的Azure工作者角色,需要從數據庫中讀取一些成員資格信息。 例如,我需要查看特定用戶所處的角色。我希望下面的示例程序能夠顯示不同的角色 - “管理員”,“帳戶管理員”等,以及某些用戶與這些角色相關聯。 我已經檢查了數據庫,並且關聯都正確存儲在'webpages_Membership'表等中。

現在的問題是,我的第二個應用程序無法看到第一個應用程序創建的任何角色。 我試圖將第一個項目的相關配置設置復制到第二個項目。 我意識到WebMatrix.WebData作為一個軟件包已被棄用,它包含在Microsoft.AspNet.WebPages.WebData ,我只是試圖保持兩個項目之間的一切完全相同。

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>

這是令人尷尬的。 起初,我錯過了App.config中的配置部分:

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

此時,我正在檢查調試器中的數組內容,並將它們視為空。 然而,在我添加該部分之后,我只是讀取控制台,並且無法弄清楚為什么我沒有改變輸出。

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

發現什么錯了嗎? 在我做出的每一次更改之后,我一直在簡單地查看輸出,期望看到輸出發生變化,但我正在查看數組引用而不是它們的實際內容!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM