設定步驟 3:設定資料來源設定
作者 :Keith Newman 和 Robert McMurray
在建置您的 ASP.NET 網站的這個階段中,您可以設定 IIS 中提供的資料來源設定。
3.1. 資料來源連接字串
本節描述如何使用 IIS 管理員 UI 或命令列在 IIS 中建立資料庫連接字串。
在 [在 IIS 上規劃 ASP.NET 網站] 中,您針對新增連接字串的需求做出下列設計決策:
- 指定連接字串的名稱。
- 指定資料庫所在的伺服器。
- 指定資料庫的名稱。
- 提供認證 (除非是使用 Windows 整合式安全性)。
使用 UI 來建立資料庫連接字串
開啟 IIS 管理員並流覽至您想要管理的層級。
在 [功能檢視] 中,按兩下 [連接字串]。
在 [連接字串] 頁面上,按一下 [動作] 窗格中的 [新增]。
在 [新增連接字串] 對話方塊中,於 [名稱] 文字方塊中輸入連接字串的名稱 (例如 MyConnection)。
注意
您在 IIS 管理員中輸入的名稱與您在應用程式程式碼中參考的名稱相同,可使用這個連接字串來擷取資料。
在選取 [SQL Server] 選項時,在 [伺服器] 文字方塊中輸入裝載資料庫之伺服器的名稱,然後在 [資料庫] 文字方塊中輸入資料庫的名稱。
在 [ 認證] 下,選擇下列其中一項:
- 選取 [使用 Windows 整合式安全性]。
- 選取 [指定認證] 並按一下 [設定]。 在 [使用者名稱] 與 [密碼] 文字方塊中輸入可連接伺服器與資料庫之帳戶的使用者名稱與密碼。 然後在 [確認密碼] 文字方塊中輸入相同的密碼,接著按一下 [確定]。
按一下 [確定]。
使用命令列來建立資料庫連接字串
使用以下語法來建立資料庫連接字串:
appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='string', name='string', providerName='string']"
變數 connectionString='string'
是連接字串值,變數 name='string'
是用來存取連接字串值的索引鍵,而變數 providerName='string'
是用來存取基礎資料存放區的 ADO.NET 提供者名稱。 例如,若要為使用 Northwind 資料庫的應用程式建立連接字串,請在命令提示字元中輸入以下命令,然後按 Enter 鍵:
appcmd set config /commit:MACHINE /section:connectionStrings /+"[connectionString='Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;', name='Northwind', providerName='System.Data.SqlClient ']"
3.2. ASP.NET 提供者
本節描述如何使用 IIS 管理員 UI 或命令列來新增 .NET 提供者至 IIS。
在 [在 IIS 上規劃 ASP.NET 網站] 中,您已做出下列有關將 .NET 提供者新增至 IIS 的設計決策:
選取提供者的 IIS 功能,以提供:.NET 設定檔、.NET 角色或 .NET 使用者。
選取提供者類型。
輸入提供者的名稱。
如果選取的功能是 .NET 使用者,請選取下列任何您想要的提供者行為:
- 啟用密碼重設
- 啟用密碼擷取
- 需要問題和答案
- 需要唯一的電子郵件
- 以安全格式儲存密碼
提供資料庫連接字串的名稱。
輸入應用程式的名稱。
使用 UI 新增提供者
開啟 IIS 管理員並流覽至您想要管理的層級。
在 [功能檢視] 中,按兩下 [提供者]。
在 [提供者] 頁面中的 [功能] 底下,選取下列其中一項功能:
- [.NET 角色]:設定提供者於 ASP.NET 角色管理服務 (「角色管理員」) 與角色資料來源之間提供一個介面。
- [.NET 使用者]:設定提供者於 ASP.NET 成員資格服務與成員資格資料來源之間提供一個介面。
- [.NET 設定檔]:設定提供者於 ASP.NET 設定檔服務與設定檔資料來源之間提供一個介面。
在 [動作] 窗格中,按一下 [新增]。
在 [新增提供者] 對話方塊中,從 [類型] 下拉式清單中選取一種提供者類型。
在 [名稱] 文字方塊中,輸入提供者的名稱。
如果已經在步驟 3 中選取 [.NET 使用者] 功能,請在 [設定檔內容] 區段的 [行為] 底下,將下列其中一項或多項行為的值設定為 True 以啟用該行為:
[EnablePasswordReset]:指示是否可以使用提供者 ResetPassword 方法來重設密碼。 預設值是 False。
[EnablePasswordRetrieval]:指示是否可以使用提供者 GetPassword 方法來擷取密碼。 預設值是 False。
重要
部分提供者 (例如 Active Directory 提供者) 不支援密碼擷取。 對於這些提供者,enablePasswordRetrieval 屬性的值一律是 False,且無法在設定中變更。
[RequiresQuestionAndAnswer]:指示當程式呼叫提供者 GetPassword 與 ResetPassword 方法時是否提供密碼解答。 預設值是 False。
[RequiresUniqueEmail]:指示每個註冊的使用者是否都必須有唯一的電子郵件地址。 預設值是 False。
[StorePasswordInSecureFormat]:指示密碼是否為雜湊密碼。 預設值是 False。
在 [資料] 底下,在 [ConnectionStringName] 文字方塊中輸入用來連接資料庫之連接字串的名稱。 (注意:這是在 [ 連接字串 ] 功能下設定的相同連接字串。如需如何設定連接字串的詳細資訊,請參閱 在 IIS 7 中設定連接字串。如果在此程式的步驟 5 中選取 WindowsTokenRoleProvider ,則連接字串名稱是選擇性的。)
在 [設定檔內容] 區段中 [一般] 底下的 [ApplicationName] 文字方塊中,選擇性地輸入應用程式的虛擬路徑。 如果您沒有在 [ApplicationName] 文字方塊中指定值,成員資格 API 會預設為 HttpContext.Current.Request.ApplicationPath。 這個路徑只能在執行階段決定。
在 [設定檔內容] 區段中 [一般] 底下的 [描述] 文字方塊中,選擇性地輸入提供者的描述。
按一下 [確定]。
使用命令列新增提供者
使用以下語法來新增 .NET 角色提供者:
appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"
變數 name='string'
是提供者的名稱。 變數 type='string'
是提供者類型。 變數 connectionStringName='string'
是用來連接到資料庫的連接字串名稱。 變數 applicationName='string'
是選擇性的,而且是應用程式的虛擬路徑。 例如,若要將 ASP.NET 應用程式設定為使用 SqlRoleProvider
類別來儲存和擷取角色資訊,請在命令提示字元中輸入下列命令,然後按 Enter:
appcmd set config /commit:MACHINE /section:roleManager /+"providers.[name='SqlProvider', type='System.Web.Security.SqlRoleProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"
使用以下語法來新增 .NET 使用者提供者:
appcmd set config /commit:MACHINE /section:membership /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string', enablePasswordReset='true|false', enablePasswordRetrieval='true|false', requiresQuestionAndAnswer='true|false', requiresUniqueEmail='true|false', storePasswordInSecureFormat='true|false']"
此語法包含下列專案:
- 變數
name='string'
是提供者的名稱。 - 變數
type='string'
是提供者類型。 - 變數
connectionStringName='string'
是用來連接到資料庫的連接字串名稱。 - 變數
applicationName='string'
是選擇性的,而且是應用程式的虛擬路徑。 - 變數
enablePasswordReset=true
會使用提供者 ResetPassword 方法來啟用密碼重設。 預設設定是false
。 - 變數
enablePasswordRetrieval=true
會使用提供者 GetPassword 方法來啟用密碼擷取。 預設設定是false
。 - 變數
requiresQuestionAndAnswer=true
要求當程式呼叫提供者 GetPassword 和 ResetPassword 方法時,必須提供密碼答案。 預設設定是false
。 - 變數
requiresUniqueEmail=true
會要求每個已註冊的使用者都有唯一的電子郵件地址。 預設設定是false
。 - 變數
storePasswordInSecureFormat=true
需要雜湊所有密碼。 預設設定是false
。
例如,若要將 ASP.NET 應用程式設定為使用 SqlMembershipProvider
類別來儲存和擷取使用者資訊,請在命令提示字元中輸入下列命令,然後按 Enter:
appcmd set config /commit:MACHINE /section:membership /+"providers.[name='SqlProvider', type='System.Web.Security.SqlMembershipProvider', connectionStringName='SqlServices', applicationName='/', enablePasswordRetrieval='False', enablePasswordReset='True', requiresQuestionAndAnswer='True']"
使用以下語法來新增 .NET 設定檔提供者:
appcmd set config /commit:MACHINE /section:profile /+"providers.[name='string', type='string', connectionStringName='string', applicationName='string']"
變數 name='string'
是提供者的名稱。 變數 type='string'
是提供者類型。 變數 connectionStringName='string'
是用來連接到資料庫的連接字串名稱。 變數 applicationName='string'
是選擇性的,而且是應用程式的虛擬路徑。 例如,若要將 ASP.NET 應用程式設定為使用 SqlProfileProvider
類別來儲存和擷取設定檔資訊,請在命令提示字元中輸入下列命令,然後按 Enter:
appcmd set config /commit:MACHINE /section:profile /+"providers.[name='SqlProvider', type='System.Web.Profile.SqlProfileProvider', connectionStringName='SqlServices', applicationName='SampleApplication']"
3.3. .NET 設定檔
本節描述如何新增設定檔內容與設定檔群組。
在 規劃 IIS 上的 ASP.NET 網站中,您已對 IIS 進行下列配置檔案屬性和群組的設計決策:
- 為每個設定檔屬性提供屬性名稱、資料類型 (例如字串或布林值)、預設值、序列化選項 (字串、XML、二進位檔或提供者特定選項)、是否為唯讀,以及是否可供匿名使用者使用。
- 為每個設定檔群組提供群組名稱。
使用 UI 新增 .NET 設定檔內容
開啟 IIS 管理員,然後流覽至您想要管理的層級。
在 [功能檢視] 中 ,按兩下 [.NET 設定檔]。
在 [動作] 窗格中,按一下 [新增內容] 來新增 .NET 設定檔內容,或若要新增 .NET 設定檔內容至群組則選取您想要對其新增 .NET 設定檔內容的群組,然後按一下 [將內容新增到群組]。
在 [新增 .NET 設定檔內容] 對話方塊中,於 [名稱] 文字方塊中輸入 .NET 設定檔內容的名稱。
在 [資料類型] 底下,選取下列其中一種資料類型:
- [System.Boolean]:設定 .NET 設定檔內容使其具有 True 或 False 的值。
- [System.Char]:設定 .NET 設定檔內容來包含 Unicode 字元。
- System.DateTime:若要設定 .NET 配置檔案屬性,以包含介於午夜 12:00:00 之間的值, 0001 年 1 月 1 日 Anno Domini (A.D.) 或 Common Era (C.E.) 到 11:59:59:59 下午 31 日 A.D. (C.E.)
- [System.Decimal]:設定 .NET 設定檔內容包含十進位數字,數字範圍則是從正 79,228,162,514,264,337,593,543,950,335 到負 79,228,162,514,264,337,593,543,950,335。 Decimal 值的類型適用於需要許多有意義的整數和小數位數且不得有捨入誤差的財務計算。
- System.Double:將 .NET 配置檔案屬性設定為包含雙精確度 64 位數位,其值範圍從負 1.79769313486232e308 到正 1.79769313486232e308,以及正數或負零、正無限大、負 無限大、 負無限大和非數位 (NaN) 。 如需 Double 實數值型別的詳細資訊,請參閱 Double 結構。
- [System.Int32]:設定 .NET 設定檔內容包含帶正負號的整數,值的範圍則是從負 2,147,483,648 到正 2,147,483,647。
- [System.Int64]:設定 .NET 設定檔內容包含整數,值的範圍則是從負 9,223,372,036,854,775,808 到正 9,223,372,036,854,775,807。
- System.Single:設定 .NET 配置檔案屬性以包含單精確度 32 位數位,其值範圍從負 3.402823e38 到正數 3.402823e38,以及正數或負零、PositiveInfinity、NegativeInfinity和 Not-a-Number (NaN) 。 如需 單一 實數值型別的詳細資訊,請參閱 單一結構。
- System.String:將 .NET 配置檔案屬性設定為代表文字字串的 Char 結構的循序集合。 這項設定是預設值。
在 [預設值] 文字方塊中,輸入將用於起始內容的值。
在 [序列化選項] 底下,選取下列其中一個序列化格式器:
- 字串:當設定屬性序列化為純文字時,請選取此選項。 這項設定是預設值。
- XML:選取此選項僅序列化公用屬性和欄位。 XML 序列化不會保留類型精確度。 當您想要在不限制使用資料之應用程式的情況下提供或取用資料時,此選項很有用。 因為 XML 是一項開放標準,所以在網路上共用資料時,它是一個很受歡迎的選擇。
- 二進位:選取此選項可保留類型精確度。 二進位序列對於在不同的應用程式叫用中保留物件狀態來說很有用。 例如,藉由將物件序列化至剪貼簿,就可在不同應用程式之間共用該物件。 您可以將物件序列化至串流、磁碟、記憶體、網路上等等。
- 提供者特定:當設定提供者具有屬性或其類型的隱含知識,而且可以挑選適當的序列化機制時,請選取此選項。 此選項通常用於自訂序列化。
請勾選 [唯讀] 方塊來設定 .NET 設定檔內容,使其無法被修改。
勾選 [供匿名使用者使用] 方塊讓 .NET 設定檔內容可供未經驗證的使用者使用。
按一下 [確定]。
使用命令列來新增 .NET 設定檔內容
使用以下語法來新增 .NET 設定檔內容:
appcmd set config /commit:MACHINE /section:profile /+"properties.[name='string', type='string', defaultValue='string', serializeAs='String|Xml|Binary|ProviderSpecific', readOnly='true|false', allowAnonymous='true|false']"
變數 name='string'
是配置檔案屬性的名稱。 變數 type='string'
是資料類型。 變數 defaultValue='string'
是配置檔案屬性初始化的值。 變數 serializeAs='String|Xml|Binary|ProviderSpecific'
會設定序列化格式子。 變數 readOnly=true
會設定 .NET 配置檔案屬性,使其無法修改。 預設值是 false
。 變數 allowAnonymous=true
可讓未驗證的使用者使用 .NET 配置檔案屬性。 預設值是 false
。 例如,若要指定含有最近搜尋清單集合的設定檔內容,請在命令提示字元輸入以下命令,然後按 Enter 鍵:
appcmd set config /commit:MACHINE /section:profile /+"properties. [name='RecentSearchList', type='System.Collections.Specialized.StringCollection', serializeAs='Xml', allowAnonymous='true']"
使用 UI 新增 .NET 設定檔群組
- 開啟 IIS 管理員,然後流覽至您想要管理的層級。
- 在 [功能檢視] 中 ,按兩下 [.NET 設定檔]。
- 在 [動作] 窗格中,按一下 [新增群組]。
- 在 [新增群組] 對話方塊中,於 [名稱] 文字方塊中輸入 .NET 設定檔群組的名稱,然後按一下 [確定]。
3.4. .NET 角色
本節描述如何使用 IIS 管理員 UI 新增 .NET 角色。
使用 UI 新增 .NET 角色
- 開啟 IIS 管理員,然後流覽至您想要管理的層級。
- 在 [功能檢視] 中 ,按兩下 [.NET 角色]。
- 在 [動作] 窗格中,按一下 [新增]。
- 在 [新增 .NET 角色] 對話方塊中,於 [名稱] 文字方塊中輸入角色的名稱,然後按一下 [確定]。
3.5. .NET 使用者
本節描述如何使用 IIS 管理員 UI 設定 .NET 使用者。
在 [規劃 IIS 上的 ASP.NET 網站] 中,您針對要新增至 IIS 的每個使用者做出下列設計決策:
- 使用者名稱
- 電子郵件
- 密碼
- 問題
- 回答
- 一個角色或多個角色
使用 UI 新增 .NET 使用者
開啟 IIS 管理員,然後流覽至您想要管理的層級。
在 [功能檢視] 中 ,按兩下 [.NET 使用者]。
在 [動作] 窗格中,按一下 [新增]。
在 [.NET 使用者帳戶詳細資料] 對話方塊中,輸入以下資訊:
- 使用者名稱 (必須是唯一的)。
- 電子郵件 (必須使用標準格式: name@domain.com) 。
- 密碼 (必須是強式密碼)。
- 確認密碼 (必須與密碼相符)。
- 問題 (輸入自訂的問題或從清單中選取)。
- 問題的解答。
按一下 [下一步] 來選擇此使用者的角色。 如果您尚未啟用 [.NET 角色],請按一下 [完成]。
在 [.NET 使用者角色] 對話方塊中,從 [角色] 方塊中選擇性選取可用的角色,然後按一下 [完成]。