共用方式為


HOW TO:建置並執行設定檔提供者範例

更新:2007 年 11 月

本章節中的主題包含 ASP.NET 設定檔提供者範例的程式碼;這個提供者範例會使用 .NET Framework Data Provider for ODBC 來連接 ODBC 資料來源,而這一節的程式碼範例會使用 Access 資料庫當成資料來源。

這個主題描述設定檔提供者範例實作的詳細資訊、描述如何建置範例,以及設定 ASP.NET 應用程式來使用範例提供者。

注意事項:

因為資料來源支援不同的 SQL 語法,所以某些 SQL 命令能夠在一個資料來源中使用,但卻無法在其他資料來源中使用。因此,即使您使用 .NET Framework Data Provider for ODBC 或 .NET Framework Data Provider for OLEDB 存取資料來源,仍然建議您建立資料來源的特定設定檔提供者。例如,您可以建立不同的提供者,例如 SybaseProfileProvider、OracleProfileProvider 等。

若要檢視範例提供者的程式碼,請參閱設定檔提供者實作範例

建立提供者資料庫

提供者是用來讀取和寫入三種資料庫資料表中的資料:Profiles、StockSymbols 和 ProfileData。範例設定檔提供者支援兩個設定檔屬性:股票符號清單和 ZIP (郵遞區號) 代號。

每個使用者設定檔在資料庫的 Profiles 資料表中是唯一識別的。像是應用程式名稱和最後活動日期的設定檔資訊,會包含在這個資料表中。Profiles 資料表包含用來唯一識別每個資料列的自動遞增主索引鍵,並將表格關聯至資料庫中包含設定檔屬性值的其他資料表。

StockSymbols 資料表包含儲存的股票符號清單值,並且使用 StockSymbols 屬性擷取。StockSymbols 資料表與 Profiles 資料表有一對多關聯性,因為單一使用者設定檔能夠追蹤任意數量的股票符號。

ZipCode 屬性值會儲存在 ProfileData 資料表中。ProfileData 資料表與 Profiles 資料表有一對一關聯性。

若要建立儲存設定檔的資料庫資料表

  1. 建立新的 Microsoft Access 資料庫,或開啟現有的資料庫。

    注意事項:

    如果您將資料庫儲存在 Web 應用程式的檔案資料夾中,建議您將資料庫儲存在應用程式的 [App_Data] 資料夾中。應用程式的程式碼能夠使用 App_Data 的內容,但是 App_Data 的內容不會公開給 Web 要求。此外,ASP.NET 處理序有讀取和寫入 [App_Data] 資料夾的權限。

  2. 在 Access 或能夠在 Access 資料庫中建立資料表的其他工具中,發出下列資料定義查詢以建立 Profiles 資料表:

    CREATE TABLE Profiles
    (
      UniqueID AutoIncrement NOT NULL PRIMARY KEY,
      Username Text (255) NOT NULL,
      ApplicationName Text (255) NOT NULL,
      IsAnonymous YesNo, 
      LastActivityDate DateTime,
      LastUpdatedDate DateTime,
        CONSTRAINT PKProfiles UNIQUE (Username, ApplicationName)
    )
    
  3. 發出下列資料定義查詢以建立 StockSymbols 資料表:

    CREATE TABLE StockSymbols
    (
      UniqueID Integer,
      StockSymbol Text (10),
        CONSTRAINT FKProfiles1 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    
  4. 發出下列資料定義查詢以建立 ProfileData 資料表:

    CREATE TABLE ProfileData
    (
      UniqueID Integer,
      ZipCode Text (10),
        CONSTRAINT FKProfiles2 FOREIGN KEY (UniqueID)
          REFERENCES Profiles
    )
    

提供事件記錄檔存取

如果範例提供者在使用資料來源時遇到例外狀況,會將例外狀況的詳細資料寫入至 Windows 應用程式事件記錄檔,而不是將例外狀況傳回 ASP.NET 應用程式。這種做法是一種安全措施,可避免在 ASP.NET 應用程式中公開資料來源的私人資訊。

範例提供者會指定 "OdbcProfileProvider" 的事件 Source。您需要先建立事件記錄檔的存取,ASP.NET 應用程式才能夠順利寫入至應用程式事件記錄檔。

注意事項:

如果您不想讓範例提供者將例外狀況寫入至事件記錄檔,則可以在 Web.config 檔的提供者組態中將 writeExceptionsToEventLog 屬性設定為 false。

若要提供事件記錄檔的存取

  • 使用 Regedit.exe 或其他 Windows 登錄編輯工具建立下列登錄機碼:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcProfileProvider
    

建置範例提供者

為了使用範例提供者,您必須讓 Web 應用程式能夠使用此程式碼。執行這項作業的方法有兩種:

  • 將範例提供者原始程式碼放在應用程式的 [App_Code] 資料夾中。在這種情況下,您不需要手動編譯範例程式碼。

  • 編譯程式碼,然後將產生的組件放在應用程式的 [Bin] 資料夾中,或以強式名稱命名並放在全域組件快取中。

若要在不手動編譯的情況下測試範例提供者

  1. 在應用程式根目錄下建立名為 [App_Code] 的資料夾 (如果尚未建立此資料夾)。

  2. 在 [App_Code] 資料夾中,依照想要使用的程式設計語言,建立名為 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文字檔。

    注意事項:

    如果應用程式的 App_Code 目錄中已經有原始程式碼存在,請使用和目錄中現有程式碼相同的語言,所撰寫的範例提供者版本。當首次要求 ASP.NET 應用程式的網頁時,ASP.NET 將編譯提供者。

  3. 將範例原始程式碼 (使用適當的語言) 複製並貼上對應的文字檔,然後儲存檔案。

若要編譯範例提供者

  1. 為自訂控制項和關聯類別的原始程式檔建立資料夾。

  2. 在原始程式碼資料夾中,依照想要使用的程式設計語言,建立名為 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文字檔。

    注意事項:

    如果您也想要手動編譯範例並且將組件加入 [Bin] 資料夾中,請勿將原始程式碼放在 [App_Code] 資料夾。如果您這樣做的話,提供者的類型將會同時存在於編譯過的組件,以及 [App_Code] 資料夾內 ASP.NET 建立的動態產生組件中。當載入提供者時這會建立模稜兩可的參考,而任何參考此類型的程式碼都會產生編譯器錯誤。

  3. 將每個範例的原始程式碼複製並貼上對應的文字檔,然後儲存檔案。

  4. 從原始程式碼資料夾執行下列命令,將控制項和相關的類別編譯為組件。

    vbc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.vb /r:System.Web.dll /r:System.Configuration.dll
    
    csc /out:OdbcProfileProvider.dll /t:library OdbcProfileProvider.cs /r:System.Web.dll /r:System.Configuration.dll
    

    /t:library 編譯器選項會要求編譯器建立程式庫 (而不是可執行組件)。/out 選項提供組件的名稱,而 /r 選項會列出連結至您組件的各組件。

    注意事項:

    如果您無法執行此編譯器命令,在執行命令前必須將 .NET Framework 安裝路徑加入 PATH 變數中。在 Windows 中,以滑鼠右鍵按一下 [我的電腦],然後依序按一下 [內容]、[進階] 索引標籤和 [環境變數] 按鈕。在 [系統變數] 清單中,按兩下 Path 變數。在 [變數值] 文字方塊中,將分號 (;) 加在文字方塊中現有值的結尾,然後輸入 .NET Framework 安裝的路徑。.NET Framework 通常是安裝在 \Microsoft.NET\Framework\versionNumber 的 Windows 安裝資料夾中。

在 ASP.NET 應用程式中設定範例提供者

若要搭配 ASP.NET Web 應用程式使用範例提供者,您必須設定應用程式以註冊提供者。

範例組態會假設您的網站已設定為使用表單驗證,並包含名為 Login.aspx 的 ASP.NET 網頁,以便讓使用者登入並建立使用者身分。範例組態也支援匿名驗證,所以使用者不需要登入。

若要設定應用程式使用範例提供者

  1. 建立名為 Login.aspx 的 ASP.NET 網頁,然後執行下列其中一項:

    • 如果應用程式已經設定為使用 ASP.NET 成員資格,就加入 Login 控制項。

    • 建立登入表單,然後使用表單驗證來驗證使用者。如需詳細資訊,請參閱 HOW TO:實作簡單表格驗證

      注意事項:

      步驟 4 中說明了表單驗證所需的組態項目。

  2. 在電腦上建立名為 "OdbcProfile" 的 DSN,然後將其設定為包含先前所建立之 Access 資料庫的連接資訊。

  3. 在應用程式的根資料夾中建立名為 Web.config 的文字檔 (如果 ASP.NET 應用程式尚未建立此文字檔)。

  4. 在 Web.config 檔中加入下列項目:

    <configuration>
      <connectionStrings>
        <add name="OdbcProfile" connectionString="DSN=OdbcProfile;" />
      </connectionStrings>
    
      <system.web>
        <authentication mode="Forms" >
          <forms loginUrl="login.aspx"
            name=".ASPXFORMSAUTH" />
        </authentication>
    
        <anonymousIdentification enabled="true" />
    
        <profile defaultProvider="OdbcProvider">
          <providers>
            <add
              name="OdbcProvider"
              type="Samples.AspNet.Profile.OdbcProfileProvider" 
              connectionStringName="OdbcProfile" /> 
          </providers>
    
          <properties>
            <add name="ZipCode" 
              allowAnonymous="true" />
            <add name="CityAndState" 
              provider="AspNetSqlProfileProvider" 
              allowAnonymous="true" />
            <add name="StockSymbols" 
              type="System.Collections.ArrayList" 
              allowAnonymous="true" />
          </properties>
        </profile>
      </system.web>
    </configuration>
    

請參閱

概念

實作設定檔提供者

ASP.NET 設定檔屬性概觀

其他資源

ASP.NET 主版頁面

ASP.NET 佈景主題和面板