Asp classic VB6.0和windows 2003群集

Asp classic VB6.0和windows 2003群集,asp-classic,vb6,cluster-computing,Asp Classic,Vb6,Cluster Computing,VB 6.0/ASP(非.NET)web应用程序,该应用程序在带有sql 2005 server的windows server 2003/IIS环境中运行。服务器上有一个c/c++组件(exe/service) 客户希望在windows群集环境中运行。由于使用windows API GetComputerName而出现问题。这将提取实际的服务器名称,而不是“别名”集群名称 c/c++组件是通过在windows中为该exe设置属性修复的,该属性强制getcomputername调用返回网络名称,在

VB 6.0/ASP(非.NET)web应用程序,该应用程序在带有sql 2005 server的windows server 2003/IIS环境中运行。服务器上有一个c/c++组件(exe/service)

客户希望在windows群集环境中运行。由于使用windows API GetComputerName而出现问题。这将提取实际的服务器名称,而不是“别名”集群名称

c/c++组件是通过在windows中为该exe设置属性修复的,该属性强制getcomputername调用返回网络名称,在本例中,该名称是别名群集名称

VB/ASP部分还调用了getcomputername。是否有类似于定义c/c++exe的设置,可以强制getcomputername使用网络名称

我们看到的是,当网页登录屏幕加载版本/功能信息时,出现一个错误,说明:找不到object~的method~。如果手动将activecomputername注册表项更改为别名clustername,则此错误将消失。无法将此用作长期修复,因为某些windows进程出现并将此键值恢复为正确的名称

是否有人建议在集群环境中运行vb应用程序?我宁愿不必更改代码,如果一个应用程序必须被编写成支持集群,我会感到震惊

谢谢

2009年7月31日更新


我想知道是否有办法通过MS Cluster管理工具告诉IIS(或分配给网站的vb)使用网络节点名而不是本地机器名。我认为这就是我与迄今为止所有人的建议脱节的地方。同样,我能够在集群管理工具中添加c/c++应用程序,并将其配置为使用网络节点名称,而无需修改任何代码。对于在IIS中运行的VB/ASP,是否有一些方法可以执行相同的操作。是否必须为群集配置IIS

您可以将此添加为vb代码的配置元素,然后将其拉入吗


将名为“
”ConfigCore.inc”
的新文件添加到代码中,其中包含以下内容:

Dim isClustered
isClustered = false
用户不应更改此文件,因为您希望确保变量至少已定义和初始化。然后,将另一个新文件添加到包含此ConfigCore.inc文件的名为“ConfigSetup.inc”的应用程序中。在这里,您将提供有关如何设置所需行为的注释示例:

''Uncomment the following line to enable this app to run in  a clustered environment
''isClustered = True
此文件记录为用户可编辑文件,您可以将其包含在其他位置,以便在必要时将其包含在范围内。

有关详细信息,请参阅

请注意,根据MSDN上的该页面,如果您将NameType参数作为ComputerNameDnsDomain传入,则该页面会声明“如果本地计算机是群集中的节点,lpBuffer将接收群集虚拟服务器的DNS域名。”


为此创建一个VB包装似乎相当简单。

也许您可以尝试使用DNS条目或本地主机文件。GetComputerName下一个调用将是解析群集的IP…我不确定这是否可行,但值得一试。我认为这不会奏效。我的基本问题是,vb web应用程序是否必须编写为群集感知,或者IIS/windows群集中是否存在允许vb应用程序在群集环境中运行的某些设置。我知道你可以用c/c++可执行文件和服务来实现这一点。@Anthony@Joel-我在这里为你的无知辩护,因为我可能不理解你的建议。如何为在IIS中运行的vb容器创建配置元素?感谢您的建议。我试图避免更改vb中的实际代码。你能详细介绍一下vb包装器吗?你需要像这样导入函数:私有声明函数myGetComputerNameEx Lib“kernel32”别名“GetComputerNameExA”(ByVal enumNameType为Long,ByVal stringNameBuffer为String,ByRef bufferSize为Long)为Boolean stringNameBuffer,bufferSize为GetComputerName(),名称类型可以是一个枚举,该枚举在上镜像枚举。您需要注意GetcomputerNameEx页面上的备注部分,特别是其中的一段,该段说“如果本地计算机是集群中的节点,行为可能会受到影响”