2009-07-16 40 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包裝。