验证 <validation>
概述
<validation>
元素配置 Internet Information Services (IIS) 7,以检测是否需要更改设置为在经典 .NET 模式下运行的 ASP.NET 应用程序,以便在集成模式下正常运行。
如果 validateIntegratedModeConfiguration 属性设置为 true 并且下列属性之一也为 true,IIS 将生成迁移错误消息:
应用程序在其 Web.config 文件中定义了一个
<httpModules>
节。在 IIS 7 集成模式中,ASP.NET 模块是通过 <system.webServer> 下的统一 <modules> 节中的本机模块指定的。
应用程序在其 Web.config 文件中定义了一个
<httpHandlers>
节。在 IIS 7 集成模式中,ASP.NET 处理程序映射在 <system.webServer> 内的统一 <handlers> 节中指定。 <handlers> 节替换了 ASP.NET
<httpHandlers>
和 IIS 脚本处理器映射配置,这两者都是设置 ASP.NET 1.0 处理程序映射所必需的。应用程序的 Web.config 文件指定
<identity impersonate="true" />
。在 IIS 7 集成模式下,客户端模拟在某些早期请求处理阶段不可用。 因此,IIS 会生成迁移错误消息。 如果 ASP.NET Web 应用程序模拟客户端凭据(最常用于 Intranet 方案),则可能需要将 validateIntegratedModeConfiguration 属性设置为 false。
注意
如果手动迁移配置,或者不迁移配置但希望 IIS 保持在集成模式(不推荐),则可通过将 validateIntegratedModeConfiguration 属性设置为 false 来禁用迁移错误消息。 由于当 validateIntegratedModeConfiguration 为 false 时,IIS 将不再针对不支持的配置提供警告,因此在进行此设置之前,请确保应用程序在集成模式下正常工作。
兼容性
版本 | 说明 |
---|---|
IIS 10.0 | <validation> 元素在 IIS 10.0 中未进行修改。 |
IIS 8.5 | <validation> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <validation> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <validation> 元素未在 IIS 7.5 中进行修改。 |
IIS 7.0 | <validation> 元素是在 IIS 7.0 中引入的。 |
IIS 6.0 | 空值 |
安装
<validation>
元素包含在 IIS 7 的默认安装中。
操作方式
IIS 7 中没有用于添加验证的用户界面。 有关如何以编程方式添加验证的示例,请参阅本文档的“代码示例”部分。
配置
特性
属性 | 说明 |
---|---|
validateIntegratedModeConfiguration |
可选布尔属性。 指定在集成模式下运行时是否启用配置验证。 在此过程中会检查 <system.Web/httpHandlers> 和 <system.Web/httpModules> 节以及模拟。默认值为 true 。 |
子元素
无。
配置示例
以下配置示例启用验证。 > [!注意]
这段摘录内容来自 Web.config 文件,因此可以在网站中的任何文件夹级别使用此配置示例。
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="true" />
</system.webServer>
</configuration>
代码示例
以下代码示例为默认网站启用验证。
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/validation /validateIntegratedModeConfiguration:"True"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using(ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection validationSection = config.GetSection("system.webServer/validation");
validationSection["validateIntegratedModeConfiguration"] = true;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim validationSection As ConfigurationSection = config.GetSection("system.webServer/validation")
validationSection("validateIntegratedModeConfiguration") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var validationSection = adminManager.GetAdminSection("system.webServer/validation", "MACHINE/WEBROOT/APPHOST/Default Web Site");
validationSection.Properties.Item("validateIntegratedModeConfiguration").Value = true;
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set validationSection = adminManager.GetAdminSection("system.webServer/validation", "MACHINE/WEBROOT/APPHOST/Default Web Site")
validationSection.Properties.Item("validateIntegratedModeConfiguration").Value = True
adminManager.CommitChanges()