VB6.0和Windows 2003集群

时间:2009-07-16 15:10:45

标签: 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而出现问题。这会提取实际的服务器名称,而不是“别名”群集名称。

通过在Windows中为该exe设置一个属性来修复c / c ++组件,该属性强制getcomputername调用返回网络名称,在本例中是网络名称。

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

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

有没有人有关于在群集环境中破坏vb应用程序的建议?我宁愿不必更改代码,如果必须编写应用程序以支持群集,则会感到震惊。

谢谢!

2009年7月31日更新

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

2 个答案:

答案 0 :(得分: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

此文件记录为用户可编辑,并将其包含在其他位置,以便在必要时将其包含在范围内。

答案 1 :(得分:1)

查看GetComputerNameEx()的详细信息。

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

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