验证 <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 来禁用迁移错误消息。 由于当 validateIntegratedModeConfigurationfalse 时,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()