1

VB 6.0 / ASP(不是 .NET)Web 应用程序在带有 sql 2005 服务器的 windows server 2003 / IIS 环境中运行。服务器上运行有 ac/c++ 组件(exe/service)。

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

通过在 windows 中为该 exe 设置一个属性来修复 c/c++ 组件,该属性强制 getcomputername 调用返回网络名称,在这种情况下是别名集群名称。

VB/ASP 部分也调用了getcomputername。是否有一些设置,类似于如何定义 ac/c++ exe,您可以在其中强制 getcomputername 使用网络名称?

我们看到的是当网页登录屏幕加载时,版本/功能信息应该在哪里,有一个错误说明:方法〜对象〜未找到。如果我们手动将 activecomputername reg 键更改为别名 clustername,此错误就会消失。不能将其用作长期修复,因为一些 Windows 进程出现并将此键值恢复为正确的名称。

有人对在集群环境中运行 vb 应用程序有建议吗?我宁愿不必更改代码,如果必须将应用程序编写为支持集群,我会感到震惊。

谢谢!

2009 年 7 月 31 日更新

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

4

2 回答 2

1

请参阅GetComputerNameEx()的详细信息。

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

看起来为此创建一个 VB 包装器应该相当简单。

于 2009-07-16T22:34:41.130 回答
1

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


将一个新文件添加到您的代码"ConfigCore.inc"中,并以此内容命名:

Dim isClustered
isClustered = false

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

''Uncomment the following line to enable this app to run in  a clustered environment
''isClustered = True

该文件被记录为用户可编辑的,您可以将其包含在其他地方,以便在必要时将其包含在范围内。

于 2009-07-16T15:22:39.270 回答