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 資料表有一對一關聯性。
若要建立儲存設定檔的資料庫資料表
建立新的 Microsoft Access 資料庫,或開啟現有的資料庫。
注意事項: 如果您將資料庫儲存在 Web 應用程式的檔案資料夾中,建議您將資料庫儲存在應用程式的 [App_Data] 資料夾中。應用程式的程式碼能夠使用 App_Data 的內容,但是 App_Data 的內容不會公開給 Web 要求。此外,ASP.NET 處理序有讀取和寫入 [App_Data] 資料夾的權限。
在 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) )
發出下列資料定義查詢以建立 StockSymbols 資料表:
CREATE TABLE StockSymbols ( UniqueID Integer, StockSymbol Text (10), CONSTRAINT FKProfiles1 FOREIGN KEY (UniqueID) REFERENCES Profiles )
發出下列資料定義查詢以建立 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] 資料夾中,或以強式名稱命名並放在全域組件快取中。
若要在不手動編譯的情況下測試範例提供者
在應用程式根目錄下建立名為 [App_Code] 的資料夾 (如果尚未建立此資料夾)。
在 [App_Code] 資料夾中,依照想要使用的程式設計語言,建立名為 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文字檔。
注意事項: 如果應用程式的 App_Code 目錄中已經有原始程式碼存在,請使用和目錄中現有程式碼相同的語言,所撰寫的範例提供者版本。當首次要求 ASP.NET 應用程式的網頁時,ASP.NET 將編譯提供者。
將範例原始程式碼 (使用適當的語言) 複製並貼上對應的文字檔,然後儲存檔案。
若要編譯範例提供者
為自訂控制項和關聯類別的原始程式檔建立資料夾。
在原始程式碼資料夾中,依照想要使用的程式設計語言,建立名為 OdbcProfileProvider.vb 或 OdbcProfileProvider.cs 的文字檔。
注意事項: 如果您也想要手動編譯範例並且將組件加入 [Bin] 資料夾中,請勿將原始程式碼放在 [App_Code] 資料夾。如果您這樣做的話,提供者的類型將會同時存在於編譯過的組件,以及 [App_Code] 資料夾內 ASP.NET 建立的動態產生組件中。當載入提供者時這會建立模稜兩可的參考,而任何參考此類型的程式碼都會產生編譯器錯誤。
將每個範例的原始程式碼複製並貼上對應的文字檔,然後儲存檔案。
從原始程式碼資料夾執行下列命令,將控制項和相關的類別編譯為組件。
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 網頁,以便讓使用者登入並建立使用者身分。範例組態也支援匿名驗證,所以使用者不需要登入。
若要設定應用程式使用範例提供者
建立名為 Login.aspx 的 ASP.NET 網頁,然後執行下列其中一項:
如果應用程式已經設定為使用 ASP.NET 成員資格,就加入 Login 控制項。
建立登入表單,然後使用表單驗證來驗證使用者。如需詳細資訊,請參閱 HOW TO:實作簡單表格驗證。
注意事項: 步驟 4 中說明了表單驗證所需的組態項目。
在電腦上建立名為 "OdbcProfile" 的 DSN,然後將其設定為包含先前所建立之 Access 資料庫的連接資訊。
在應用程式的根資料夾中建立名為 Web.config 的文字檔 (如果 ASP.NET 應用程式尚未建立此文字檔)。
在 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>