2009-07-16 19 views
1

SQL Server 2005/2003のIIS環境で動作するVB 6.0/ASP(.NETではない)Webアプリケーション。実行されるac/C++コンポーネント(exe/service)があります。サーバー。VB6.0およびwindows 2003クラスタリング

お客様は、Windowsクラスタ環境で実行したいと考えています。問題は、Windows API GetComputerNameの使用により発生します。これにより、実際のサーバー名が取得され、「別名」クラスター名は取得されません。

c/C++コンポーネントは、exeファイルのWindowsでプロパティを設定することで修正され、getcomputername呼び出しによってネットワーク名(この場合は別名クラスタ名)が返されます。

VB/ASP部分には、getcomputernameの呼び出しもあります。いくつかの設定は、c/C++ exeを定義する方法と似ていますが、getcomputernameにネットワーク名を使用させることができますか?

ウェブページのログイン画面が読み込まれたときに、バージョン/機能情報が存在する必要があります。method〜〜オブジェクトが見つかりませんでした。 activecomputernameのregキーをalias clusternameに手動で変更すると、このエラーはなくなります。いくつかのウィンドウの処理が行われ、このキー値を正しい名前に戻すため、これを長期的な修正として使用します。

クラスタ化されたenvでvbアプリケーションを破棄するための提案はありますか?私は、コードを変更する必要はありませんし、アプリケーションがクラスタ対応であるために書かれなければならない場合は半ショックを受けます。

ありがとうございます!

アップデート2009年7月31日

を介してローカルマシン名の代わりに、ネットワーク・ノード名を使用するようにIIS(またはウェブサイトに割り当てられているVB)を伝える方法があった場合、私は思っていた

MSクラスタ管理ツール。私はそれが今までのところ誰もが提案したところで私の切断が起こっていると思う。ここでも、クラスタ管理ツールにc/C++アプリケーションを追加し、コードを変更せずにネットワークノード名を使用するように設定できました。 IISで実行されるVB/ASPに対して同じことを行う方法がいくつかあります。クラスタリングのためにIISを構成する必要がありますか?

+0

DNSエントリまたはローカルホストファイルで試してみることもできます。 GetComputerName次の呼び出しは、クラスタのIPを解決することです...これは動作するかどうかはわかりませんが、試してみる価値があります。 –

答えて

1

これを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 

このファイルをユーザーが編集可能として文書化され、そしてどここれまで必要な、それはスコープ内にありますように、あなたは他の場所にあります。

+0

はそれがうまくいくとは思わない。 私の基本的な質問は、VB Webアプリケーションがクラスタ対応であることを記述する必要があるのか​​、またはIIS/Windowsクラスタリングでvbアプリケーションをクラスタ環境で実行できるようにする設定があるかどうかです。私はあなたがc/C++の実行可能ファイルとサービスでこれを行うことができることを知っています。 – MattLear

+0

+1。 @マット:なぜこれは動作しません。 – AnthonyWJones

+0

@Anthony @ Joel - 私はおそらくあなたの提案を理解していないという点でここに無知を言い張ります。どのようにIISで実行されるvbコンテナの設定要素を作成しますか? – MattLear

1

GetComputerNameEx()の詳細を参照してください。あなたはComputerNameDnsDomainとしてNAMETYPEパラメータを渡す場合は、MSDNのそのページによると、ページがローカルコンピュータがクラスタ内のノードである場合、lpBufferがDNSドメイン名を受信」と述べている

注意 "

このために、VBラッパーを作成するのはかなり簡単なようです。

+0

提案していただきありがとうございますrangerchris。私はVBで実際のコードを変更しないようにしようとしています。 VBラッパーで詳しく説明できますか? – MattLear

+0

あなたはこのような関数をインポートする必要があります。 プライベート宣言機能myGetComputerNameExのLib「kernel32の」エイリアス「GetComputerNameExA」(ByValのenumNameTypeロング、文字列としてByVal stringNameBuffer、ロングとしてのByRefがbufferSizeとして)ブールとして stringNameBufferとGetComputerNameのように使用bufferSizeの() name-typeは、http://msdn.microsoft.com/en-us/library/ms724224(VS.85).aspxの列挙型を反映する列挙型にすることができます。 GetcomputerNameExページの[備考]セクションをメモする必要があります。特に、動作が「ローカルコンピュータがクラスタ内のノードである場合に影響を受ける可能性がある」というパラメータは、 –

関連する問題