配置“步骤 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 配置文件属性配置为包含日期和时间,并且这些日期和时间的值范围是从公元 (A.D.) 或基督纪元 (C.E.) 0001 年 1 月 1 日午夜 12:00:00 到公元或基督纪元 9999 年 12 月 31 日晚上 11:59:59。
- “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,以及 +0 或 -0、PositiveInfinity、NegativeInfinity 和非数字 (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,以及 +0 或 -0、PositiveInfinity、NegativeInfinity 和非数字 (NaN)。 有关 Single 值类型的详细信息,请参阅 Single 结构。
- “System.String”:将 .NET 配置文件属性配置为表示文本字符串的 Char 结构的有序集合。 此设置为默认设置。
在“默认值”文本框中,键入用于初始化该属性的值。
在“序列化选项”下,请选择以下序列化格式化程序之一:
- 字符串:如果将设置属性序列化为纯文本,则选择此选项。 此设置为默认设置。
- XML:如果选择此选项,则只序列化公共属性和字段。 XML 序列化并不保持类型的保真度。 当你要提供或使用数据而不限制使用该数据的应用程序时,此选项将十分有用。 由于 XML 是一种开放式标准,因而是一种在 Web 上共享数据的极佳选择。
- 二进制:选择此选项可保持类型的保真度。 对于保留对象在不同应用程序调用之间的状态,二进制序列化很有用。 例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。 你可以将对象序列化到流、磁盘、内存和网络等位置。
- 提供程序特定:如果设置提供程序隐式了解该属性或其类型,并可以选择相应的序列化机制,请选择此选项。 此选项通常用于自定义序列化。
选中“只读”框,以将 .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 的每个用户作出了以下设计决策:
- 用户名
- 电子邮件
- 密码
- 问题
- Answer
- 角色
使用 UI 添加 .NET 用户
打开 IIS 管理器并导航到你想要管理的级别。
在“功能视图”中,双击“.NET 用户”。
在“操作”窗格中,单击“添加”。
在“.NET 用户帐户详细信息”对话框中,输入以下信息:
- 用户名(必须是唯一的)。
- 电子邮件(必须采用标准格式:name@domain.com)。
- 密码(必须为强密码)。
- 确认密码(必须与密码匹配)。
- 问题(输入自定义问题或从列表中进行选择)。
- 问题答案。
单击“下一步”来为此用户选择角色。 如果你尚未启用“.NET 角色”,请单击“完成”。
在“.NET 用户角色”对话框中,可以从“角色”框中选择可用角色,然后单击“完成”。