2009-07-16 44 views
1

在Windows Server 2003/IIS环境中运行SQL Server 2005的VB 6.0/ASP(不是.NET)Web应用程序。有运行于其上的ac/C++组件(exe/service)服务器。VB6.0和Windows 2003集群

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

通过在该exe文件的窗口中设置一个属性,可以强制getcomputername调用返回网络名称(在本例中为别名集群名称),从而修复了c/C++组件。

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

我们看到的是,当网页登录屏幕加载版本/功能信息时,出现错误,指出:object〜method〜of〜not found。如果我们手动将activecomputername注册密钥更改为别名群集名称,则此错误消失。不能使用这个作为一个长期的修复,因为一些窗口过程出现并将这个关键值恢复为正确的名称。

有没有人有建议在群集env中破坏vb应用程序?我宁愿不必更改代码,如果必须将应用程序编写为支持群集,才会感到半不安。

谢谢!

更新7/31/2009

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

+0

也许你可以尝试玩DNS条目或本地主机文件。 GetComputerName下一次调用将解决集群的IP ...我不确定这是否可行,但值得一试。 – 2009-07-16 15:26:51

回答

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 

该文件记录为用户可编辑的,而你包括在其他地方,这样它的范围在以往任何时候必要的。

+0

不认为这是行得通的。 我的基本问题是,做一个VB Web应用程序已被编写成集群感知,或者是在有IIS/Windows群集的一些设置,将允许VB程序在集群环境中运行。我知道你可以用c/C++可执行文件和服务来做到这一点。 – MattLear 2009-07-16 15:42:15

+0

+1。 @Matt:为什么不能这样工作。 – AnthonyWJones 2009-07-16 21:34:36

1

查看GetComputerNameEx()的详细资料。

注意,根据MSDN上的那个页面,如果你在NAMETYPE参数作为ComputerNameDnsDomain传球,页指出,“如果本地计算机是在集群中的节点,lpBuffer接收DNS域名群集虚拟服务器的。

它看起来应该是相当简单创建这个VB包装。