症状
在 Microsoft 最前沿威胁管理网关 2010 中的 HTTP 连接性验证程序可能会返回实际可用的网站时出现故障。因此,使用 Web 发布负载平衡 (WPLB) 的规则可能不可用,因为威胁管理网关错误地假定 web 场中的所有服务器都都不可用。您还可能收到的验证程序问题的频繁"无连接"的消息。这些消息如下所示:
连接性验证程序"Name_of_Verifier"在尝试连接到 https://ip_host/uri 时报告错误。原因: 没有连接。
连接性验证程序"Name_of_Verifier"在尝试连接到 https://ip_host/uri 时报告错误。原因: 请求已超时。
事件 Id 10050 和 21137,有时会另一个表示此问题。通过检查监视菜单上的结果列在连接性验证程序下,您可以监视单个连接性验证程序中威胁管理网关 Microsoft 管理控制台 (MMC) 的状态。
原因
如果 HTTP 连接性验证程序重定向到一个不同的 URL 时它会验证服务器,则可能会出现此问题。通常情况下,这可能会发生下列情况之一时:
-
配置目标 URL 重定向到一个不同的 URL。这可能是一个完全不同的 URL 或相对路径在配置的 URL。在此情况下,服务器名和请求的 URI 可能会更新。
-
目标 URL 包含将请求重定向到详细的错误页面 URL 的错误处理代码。
在此情况下,连接性验证程序 URL 更新到重定向的 URL,并在以后的请求中不刷新。
解决方案
要解决此问题,请安装最前沿威胁管理网关 (TMG) 2010 Service pack 2 的累积 5 。
替代方法
要变通解决此问题,请对威胁管理网关配置进行更改。例如,更改数组,描述,然后应用这些更改。这将重新应用连接性验证程序的配置。注意:此替代方法是临时性的并导致连接性验证程序 URL 更新原始条件可能会重复发生。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
Forefront 威胁管理网关 2010 Service Pack 2 的汇总 5 将支持添加到控件连接性验证程序处理 HTTP 重定向的方式。默认情况下,连接性验证程序将不再跟踪重定向,它将查询仅连接性验证程序配置中指定的 URL。注意:下面的脚本是必需的只有当您想要更改的新的默认行为。
-
将以下脚本复制到一个文本文件,然后将该文件另存为 SetConnectivityVerifierHttpRedirectProcessingOptions.vbs:
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const strVpsPropertyName = "ConnectivityVerifierHttpRedirectProcessingOptions"Const Error_FileNotFound = &H80070002Set objArgs = wscript.ArgumentsfInvalidParameterValue = Trueif objArgs.Count > 0 then uIntParamValue = objArgs(0) fInvalidParameterValue = (uIntParamValue < 0)end ifif objArgs.Count <> 1 or fInvalidParameterValue then wscript.echo "Usage: SetConnectivityVerifierHttpRedirectProcessingOptions.vbs <options>" wscript.echo wscript.echo "Exactly one nonnegative numeric parameter is accepted" wscript.Quit 2end ifset objArray = CreateObject("FPC.Root").GetContainingArray()Set objVPSet = OpenVPSet(objArray, strVpsGUID)objVPSet.Value(strVpsPropertyName) = uIntParamValueobjArray.Savefunction OpenVPSet(objParent, strVpsGUID) Set objVPSets = objParent.VendorParametersSets On Error Resume Next Set OpenVPSet = objVPSets.Item(strVpsGUID) ' Save the Err properties in case it needs to be re-raised errNumber = Err.Number errSource = Err.Source errDescription = Err.Description errHelpFile = Err.HelpFile errHelpContext = Err.HelpContext On Error GoTo 0 if errNumber = Error_FileNotFound Then Set OpenVPSet = objVPSets.Add(strVpsGUID) Elseif errNumber < 0 Then ' An error other than "file not found" occurred -- re-raise the error, ' this time not under "On Error Resume Next" Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext End Ifend function
-
从下面的列表中,选择所需的行为,然后在管理命令提示符下运行命令:
-
选项 1: 取消激活 (还原到前累积 5 功能) 这两种功能
cscript.exe SetConnectivityVerifierHttpRedirectProcessingOptions.vbs 0"
-
选项 2: 防止连接性验证程序遵循 HTTP 重定向 (默认值)
cscript.exe SetConnectivityVerifierHttpRedirectProcessingOptions.vbs 1
-
选项 3: 续订的连接性验证程序 URL 发送一个请求每次
cscript.exe SetConnectivityVerifierHttpRedirectProcessingOptions.vbs 2
-
第 4 种选择: 启用两个功能选项 2 和 3
cscript.exe SetConnectivityVerifierHttpRedirectProcessingOptions.vbs 3
-
参考
了解 Microsoft 用于描述软件更新的术语。