配置步骤 2:配置 ASP.NET 设置
作者:Keith Newman 和 Robert McMurray
2.1. 会话状态设置
在在 IIS 上规划 ASP.NET 网站中,你决定了使用以下会话状态存储选项之一:
- 进程内:会话状态存储在运行 ASP.NET 应用程序的工作进程内。
- 状态服务器:会话状态存储在运行 ASP.NET 应用程序的工作进程外。
- SQL Server:会话状态存储在 SQL Server 数据库中。
你可能还选择了将会话数据存储在客户端计算机上的 Cookie 中。 你甚至可以将使用 Cookie 与其他存储方法之一结合。 例如,在 SQL Server 数据库中存储其他会话状态数据时,可以同时在 Cookie 中存储身份验证数据。
以下部分介绍了如何基于所做的规划决策配置会话状态:
在进程内存储会话状态
本部分介绍如何使用 IIS 管理器 UI 或命令行配置进程内会话状态。
使用 UI 启用进程内会话状态
打开 IIS 管理器并导航到你想要管理的级别。
在“功能视图”中,双击“会话状态”。
在“会话状态”页面上的“会话状态模式设置”区域中,单击“进程内”。
(可选)在“会话状态”页面上的“Cookie 设置”区域中配置 Cookie 设置。
有关 Cookie 设置的详细信息,请参阅会话状态的 Cookie 模式。
在“超时”字段中,采用 hh:mm:ss 格式输入超时值。 例如,若要设置 15 分钟,请输入 00:15:00。
(可选)选中“对模拟使用主机标识”复选框,以便对远程连接使用 Windows 身份验证和主机进程标识(ASP.NET 或 Windows 服务标识)。
在“操作”窗格中,单击“应用”。
使用命令行启用进程内会话状态
若要启用进程内会话状态,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /mode:InProc
变量 mode:InProc
启用进程内会话状态。 默认情况下,进程内会话状态处于启用状态。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
若要指定在上次发出与某个会话对象关联的请求后将保留该对象的默认时长,请使用以下语法:
appcmd set config /section:asp /timeout:timeSpan
变量 timeSpan
表示在上次发出与某个会话对象关联的请求后将保留该对象的最长时间 (hh:mm:ss)。 默认值为 00:20:00。
使用状态服务器存储会话状态
本部分介绍如何使用 IIS 管理器 UI 或命令行为会话状态存储配置状态服务器。
在在 IIS 上规划 ASP.NET 网站中,你做出了以下设计决策:
- 为状态服务器定义连接字符串。
- 指定在连接超时前等待的秒数。
- 决定是否启用压缩。
- 决定是否将任何会话状态数据存储在 Cookie 中。
使用 UI 配置状态服务器来维持会话状态
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“会话状态”。
- 在“会话状态”页面上的“会话状态模式设置”区域中,单击“状态服务器”。
- 在“连接字符串”文本框中键入连接字符串,或单击“创建”以创建一个连接字符串。
- 在“超时(秒)”文本框中,键入一个超时值。 默认超时值为 10 秒。
- (可选)在“会话状态”页面上的“Cookie 设置”区域中配置 Cookie 设置。 有关 Cookie 设置的详细信息,请参阅会话状态的 Cookie 模式。
- (可选)选中“对模拟使用主机标识”复选框,以使用 Windows 身份验证和主机进程标识(ASP.NET 或 Windows 服务标识)建立到数据库的连接。
- 在“操作”窗格中,单击“应用”。
使用命令行配置状态服务器来维持会话状态
若要配置状态服务器来维持会话状态,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /mode:StateServer /stateConnectionString:string /stateNetworkTimeout:timeSpan /useHostingIdentity:true|false
变量 mode:StateServer
将会话状态模式设置为在状态服务器中存储会话数据。 默认情况下,变量 string
定义状态服务器使用的连接字符串。 默认设置为 tcpip=loopback:42424
。 变量 timeSpan
设置状态服务器连接的维持时间(以秒为单位)。 默认值为 10 秒。 变量 useHostingIdentity:true|false
允许或禁止使用 Windows 身份验证和主机进程标识(ASP.NET 或 Windows 服务标识)建立到数据库的连接。 默认值为 true
。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
使用 SQL Server 存储会话状态
本部分介绍如何使用 IIS 管理器 UI 或命令行为会话状态存储配置 SQL Server 数据库。
在在 IIS 上规划 ASP.NET 网站中,你做出了以下设计决策:
- 为数据库定义连接字符串。
- 指定在连接超时前等待的秒数。
- 指定在尝试重新连接前等待的秒数。
- 决定是否启用自定义数据库。
- 决定是否启用压缩。
- 决定是否将任何会话状态数据存储在 Cookie 中。
使用 UI 配置 SQL Server 来维持会话状态
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“会话状态”。
- 在“会话状态”页面上的“会话状态模式设置”区域中,单击“SQL Server”。
- 在“连接字符串”文本框中键入连接字符串,或单击“创建”以创建一个连接字符串。 如果 SQL Server 位于你管理的服务器上,请在“连接字符串”文本框中选择“LocalSqlServer”。
- 在“超时”文本框中,键入一个超时值。
- (可选)选中“启用自定义数据库”复选框,以使用自定义数据库存储会话状态数据。
- (可选)在“会话状态”页面上的“Cookie 设置”区域中配置 Cookie 设置。 有关 Cookie 设置的详细信息,请参阅会话状态的 Cookie 模式。
- (可选)选中“对模拟使用主机标识”复选框,以使用 Windows 身份验证和主机进程标识(ASP.NET 或 Windows 服务标识)建立到 SQL 数据库的远程连接。
- 在“操作”窗格中,单击“应用”。
使用命令行配置 SQL Server 来维持会话状态
若要配置状态服务器来维持会话状态,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /mode:SqlServer /sqlConnectionString:string /sqlCommandTimeout:timeSpan /useHostingIdentity:true|false
变量 mode:SqlServer
将会话状态模式设置为在 SQL 服务器数据库中存储会话数据。 默认情况下,变量 string
定义 SQL 服务器使用的连接字符串。 默认设置是 LocalSqlServer。 变量 timeSpan
设置 SQL 服务器连接的维持时间(以秒为单位)。 默认值为 30 秒。 变量 useHostingIdentity:true|false
允许或禁止使用 Windows 身份验证和主机进程标识(ASP.NET 或 Windows 服务标识)建立到数据库的连接。 默认值为 true
。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
会话状态的 Cookie 模式
本部分介绍了如何使用 IIS 管理器 UI 或命令行为会话状态存储配置 SQL Server 数据库。
在在 IIS 上规划 ASP.NET 网站中,你做出了以下设计决策:
- 选择 Cookie 模式:自动检测、使用 Cookie、使用设备配置文件或使用 URI。
- 除非你已选择使用 URI,否则应指定 Cookie 的名称。
- 除非你已选择使用 URI,否则应指定 Cookie 超时前等待的分钟数。
- 除非你已选择使用 Cookie,否则应决定是否要重新生成过期的会话 ID。
使用 UI 为会话状态配置“使用 Cookie”模式
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“会话状态”。
- 在“会话状态”页面上的“Cookie 设置”区域中,从“模式”下拉列表选择“使用 Cookie”。
- 在“名称”文本框中键入一个 Cookie 名称,或使用默认的 Cookie 名称 ASP.NET_SessionId。
- 在“超时”文本框中键入一个超时值,或采用默认的超时值 20 分钟。
- 在“操作”窗格中,单击“应用”。
使用命令行为会话状态配置使用 Cookie 模式
若要为会话状态配置使用 Cookie 模式,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:UseCookies /cookieName:string /timeout:timeSpan
变量 cookieless:UseCookies
将 IIS 8 配置为对会话状态使用 Cookie 模式。 这是默认值。 变量 string
是 Cookie 的名称。 默认值为 ASP.NET_SessionId
。 变量 timeSpan
设置 Cookie 的超时值(以分钟为单位)。默认值为 20 分钟。 例如,若要为会话状态设置使用 Cookie 模式的 Cookie(名为 MyCookie 并在 40 分钟后过期),请在命令提示符下键入以下内容,然后按 Enter:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:UseCookies /cookieName:MyCookie /timeout:40
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
若要为会话状态配置使用设备配置文件的 Cookie 模式,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:UseDeviceProfile /cookieName:string /timeout:timeSpan /regenerateExpiredSessionId:true|false
变量 cookieless:UseDeviceProfile
将 IIS 8 配置为对会话状态使用设备配置文件 Cookie 模式。 变量 string
是 Cookie 的名称。 默认值为 ASP.NET_SessionId
。 变量 timeSpan
设置 Cookie 的超时值(以分钟为单位)。默认值为 20 分钟。 变量 regenerateExpiredSessionId:true|false
启用或禁用过期会话 ID 的重新生成。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
若要为会话状态配置自动检测 Cookie 模式,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:AutoDetect /cookieName:string /timeout:timeSpan /regenerateExpiredSessionId:true|false
变量 cookieless:AutoDetect
将 IIS 8 配置为对会话状态使用自动检测 Cookie 模式。 变量 string
是 Cookie 的名称。 默认值为 ASP.NET_SessionId
。 变量 timeSpan
设置 Cookie 的超时值(以分钟为单位)。默认值为 20 分钟。 变量 regenerateExpiredSessionId:true|false
启用或禁用过期会话 ID 的重新生成。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
若要为会话状态配置 URI Cookie 模式,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:UseUri /regenerateExpiredSessionId:true|false
变量 cookieless:UseUri
将 IIS 8 配置为对会话状态使用 URI Cookie 模式。 变量 regenerateExpiredSessionId:true|false
启用或禁用过期会话 ID 的重新生成。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <sessionState>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
2.2. 页面和控件设置
本部分介绍如何使用 IIS 管理器 UI 或命令行配置 ASP.NET 页面和控件设置。
注意
这些设置仅适用于 ASP.NET Web 窗体。 它们并不适用于 ASP.NET MVC 或 ASP.NET 网页。
编辑页面和控件
你可以编辑现有页面和控件的设置,并且所做的更改将反映在 Web.config 文件中。
使用 UI 编辑页面和控件的设置
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“页面和控件”。
- 在“页面和控件”页面上,根据需要编辑设置。
- 完成操作后,单击“操作” 窗格中的“应用” 。
使用命令行编辑页面和控件的设置
若要启用或禁用页面输出缓冲,请使用以下语法:
appcmd set config /commit:WEBROOT /section:pages /buffer:true|false
变量 buffer:true
启用页面输出缓冲。 默认为 true
。
添加自定义控件
在在 IIS 上规划 ASP.NET 网站中,你为要添加的每个自定义控件做出了以下设计决策:
- 指定控件的标记前缀。
- 指定控件的 .NET 命名空间。
- 指定控件所在的程序集。
使用 UI 添加自定义控件
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“页面和控件”。
- 在“操作”窗格中,单击“注册控件”。
- 在“操作”窗格中,单击“添加自定义控件”。
- 在“添加自定义控件”对话框的“标记前缀”文本框中,键入一个标记前缀。
- 在“命名空间”文本框中,键入该自定义控件所属的命名空间。 这是在应用程序代码中指定的相同命名空间。
- 在“程序集”文本框中,键入该自定义控件的源文件或程序集的名称,然后单击“确定”。
使用命令行添加自定义控件
若要添加自定义控件,请使用以下语法:
appcmd set config /commit:WEBROOT /section:system.web/pages /+"controls.[assembly='string', namespace='string', src='string', tagName='string', tagPrefix='string']"
变量 assembly='string'
是包含 COM 控件实现的程序集的名称,它要求同时设置 namespace
属性。 变量 namespace='string'
是与标记前缀关联的命名空间,如果 COM 控件不在应用程序代码目录中,则还需要设置 assembly
属性。 变量 src='string'
是包含该用户控件的文件的名称,它要求同时设置 tagName
属性。 变量 tagName='string'
是要在页面中使用的控件的名称,它要求同时设置 src
属性。 变量 tagPrefix='string'
是要映射到源文件或命名空间和程序集的标记前缀。 此属性需要以下其他属性组合之一:
- 如果 COM 控件位于应用程序代码目录中,请使用
namespace
来定义该控件。 - 使用
namespace
和assembly
来定义 COM 控件。 - 使用
tagName
和src
来定义用户控件。
例如,若要添加使用用户控件的指定源文件的自定义控件,请在命令提示符下键入以下内容,然后按 Enter:
appcmd set config /commit:WEBROOT /section:system.web/pages /+"controls.[tagPrefix='MyTag', tagName='MyControl', src='controls/MyControl.asx']"
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <controls>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
2.3. 应用程序设置
本部分介绍如何使用 IIS 管理器 UI 或命令行配置应用程序设置。
在在 IIS 上规划 ASP.NET 网站中,你为要配置的每个应用程序设置做出了以下设计决策:
- 为设置指定名称。
- 为设置指定值。
使用 UI 创建应用程序设置
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“应用程序设置”。
- 在“操作”窗格中,单击“添加”。
- 在“添加应用程序设置”对话框的“名称”文本框中,为应用程序设置键入一个名称。
- 在“添加应用程序设置”对话框的“值”文本框中,为应用程序设置键入一个值,然后单击“确定”。
使用命令行创建应用程序设置
若要添加应用程序设置,请使用以下语法:
appcmd set config /commit:MACHINE /section:appSettings /+"[key='string', value='string']"
变量 key=string
是应用程序设置名称,变量 value=string
是应用程序设置值。 例如,若要为应用程序的名称添加应用程序设置,请在命令提示符下键入以下内容,然后按 Enter:
appcmd set config /commit:MACHINE /section:appSettings /+"[key='Application Name', value='MyApplication']"
2.4。 .NET 编译设置
如果要控制 ASP.NET 代码的编译方式,则需要在 IIS 8 中编辑 .NET 编译设置。 本部分介绍如何为 ASP.NET 应用程序编辑编译设置。
使用 UI 配置 .NET 编译设置
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“.NET 编译”。
- 在“.NET 编译”页面上,根据需要编辑设置。
- 完成操作后,单击“操作” 窗格中的“应用” 。
使用命令行配置 .NET 编译设置
若要为站点启用或禁用批处理编译,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /batch:true|false
变量 batch:true
启用批处理编译,变量 batch:false
禁用批处理编译。 默认值为 true
。
若要更改批处理编译的最大文件大小(以 KB 为单位),请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /maxBatchGeneratedFileSize:int
变量 int
是最大文件大小(以 KB 为单位)。 默认值为 1000。
若要为站点指定每次批处理编译时的最大页数,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /maxBatchSize:int
变量 int
是每次批处理编译时的最大页数。
若要为站点定义批处理编译的超时期限(以秒为单位),请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /batchTimeout:timeSpan
变量 timeSpan
是批处理编译的超时(以秒为单位)。
若要为站点指定对二进制零售或调试文件的编译,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /debug:true|false
变量 debug:true
启用调试二进制文件的编译,变量 debug:false
启用零售二进制文件的编译。 默认值为 false
。
若要为站点指定在应用程序重新启动前对资源进行动态重新编译的次数,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /numRecompilesBeforeAppRestart:int
变量 int
是在应用程序重新启动前对资源进行动态重新编译的次数。 默认值为 15。
若要为站点启用或禁用 URL 行杂注,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /urlLinePragmas:true|false
变量 urlLinePragmas:true
启用 URL 行 pragma,变量 urlLinePragmas:false
禁用 URL 行 pragma。 默认值为 false
。
若要为站点启用或禁用 Visual Basic 显式编译,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /explicit:true|false
变量 explicit:true
启用 Visual Basic 显式编译,变量 explicit:false
禁用显式编译。 默认值为 false
。
若要为站点启用或禁用 Visual Basic 严格编译,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /strict:true|false
变量 strict:true
启用 Visual Basic 严格编译,变量 strict:false
禁用严格编译。 默认值为 false
。
若要为站点添加 ASP.NET 编译处理指令,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /+"assemblies.[assembly='string']"
变量 string
是 ASP.NET 编译处理指令。
若要为站点删除 ASP.NET 编译处理指令,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /-"assemblies.[assembly='string']"
变量 string
是 ASP.NET 编译处理指令。
若要为站点删除 ASP.NET 编译处理指令,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /-"assemblies.[assembly='string']"
变量 string
是 ASP.NET 编译处理指令。
若要为站点更改动态编译文件中使用的默认编程语言,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /defaultLanguage:string
变量 string
是默认编程语言。 默认值为 vb。 例如,若要将动态编译文件中使用的默认编程语言从 Visual Basic 更改为 C#,请在命令提示符下键入以下内容,然后按 Enter:
appcmd set config /commit:WEBROOT /section:compilation /defaultLanguage:c#
若要为站点指定要在编译期间用于存储临时文件的目录,请使用以下语法:
appcmd set config /commit:WEBROOT /section:compilation /tempDirectory:
字符串
变量 string
是目录路径。
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <compilation>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
2.5。 .NET 全球化设置
本部分介绍如何使用 IIS 管理器 UI 或命令行编辑 ASP.NET 应用程序的全球化设置。
使用 UI 编辑 .NET 全球化设置
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图”中,双击“.NET 全球化”。
- 在“.NET 全球化”页面上的属性表中,单击要编辑的全局设置以将其选中,然后从下拉列表中选择一个值。
- 在“操作”窗格中,单击“应用”。
使用命令行编辑 .NET 全球化设置
若要编辑用于处理 Web 请求的默认区域性,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /culture:string
变量 string 是用于处理 Web 请求的默认区域性。 例如,若要将处理 Web 请求时使用的默认区域性更改为美国英语,请在命令提示符下键入以下内容,然后按 Enter:
appcmd set config /commit:WEBROOT /section:globalization /culture:en-us
注意
在 IIS 8 中使用 Appcmd.exe 在全局级别配置 <globalization>
元素时,请在命令中指定 /commit:WEBROOT
,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
若要启用或禁用基于客户端的区域性,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /enableClientBasedCulture:true|false
变量 enableClientBasedCulture:true
启用基于客户端的区域性,变量 enableClientBasedCulture:false
禁用基于客户端的区域性。 默认为 false
。
若要编辑用于处理与区域设置相关的资源搜索的默认区域性,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /uiCulture:string
变量 string
是用于处理与区域设置相关的资源搜索的默认区域性。
若要编辑用于处理与区域设置相关的资源搜索的默认区域性,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /uiCulture:string
变量 string
是用于处理与区域设置相关的资源搜索的默认区域性。
若要更改分析 .aspx、.asmx 和 .asax 文件时的默认编码,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /fileEncoding:string
变量 string
是分析 .aspx、.asmx 和 .asax 文件时要使用的默认编码。
若要更改标头编码以供响应,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /responseHeaderEncoding:string
变量 string
是可供响应使用的标头编码。 默认值为 UTF-8。
若要编辑内容编码以供响应,请使用以下语法:
appcmd set config /commit:WEBROOT /section:globalization /responseEncoding:string
变量 string
是可供响应使用的内容编码。 默认值为 UTF-8。