- PR -

RemotingConfigurationについて

1
投稿者投稿内容
セリカ
会議室デビュー日: 2006/12/18
投稿数: 12
投稿日時: 2006-12-26 15:06
.NET Remotingについてです。

1exe(1画面)で、メッセージを別マシンに送るプログラムを作っています。
1プロセス内(再起動はしない)で、
・マシンAからマシンXに送る
・マシンAからマシンYに送る
という処理を行おうと考えています。
ホスト名だけ変更して、同じリモートオブジェクトを使用して(自前で作ったServiceClass)、ホスト名とポート番号を変更しようと考えています。

すると、以下のようコードになります。

RemotingConfiguration.RegisterWellKnownClientType(typeof(ServiceClass), "http://" + machineName + ":" + portNo + "/ServiceObjectUri");

ただ、マシンAからマシンYに送るとき、以下のようなエラーが出てしまいます。

System.Runtime.Remoting.RemotingException: 既にターゲットが変更されている型 'Service.ServiceClass, ServiceClass' のアクティブ化のターゲットを変更しようとしました。
場所 System.Runtime.Remoting.RemotingConfigHandler.RemotingConfigInfo.AddWellKnownClientType(WellKnownClientTypeEntry entry)
場所 System.Runtime.Remoting.RemotingConfigHandler.RegisterWellKnownClientType(WellKnownClientTypeEntry entry)
場所 System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(WellKnownClientTypeEntry entry)
場所 System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(Type type, String objectUrl)
場所 MessageManager.MessageManager.sendMessage(String machineName, String portNo, String message) 場所 C:\Documents and Settings\user\デスクトップ\技術検証用\MessageManager\MessageManager\MessageManager.cs:行 52

このエラーをどうにかしたいです。
エラーの内容から、「2回もServiceClassを登録しちゃダメ」って言われているということは分かるんですけど・・・
RemotingConfigurationクラスに存在する以下の静的メソッドの情報って
一度登録してしまうと、プロセスが消えるまで変更も消すこともできないのでしょうか。。。
いろいろ探してみましたが、解放することも初期化することもできません。

RegisterActivatedClientTypeメソッド (GetRegisteredActivatedClientTypesメソッド)
RegisterActivatedServiceTypeメソッド (GetRegisteredActivatedServiceTypesメソッド)
RegisterWellKnownClientTypeメソッド (GetRegisteredWellKnownClientTypesメソッド)
RegisterWellKnownServiceTypeメソッド (GetRegisteredWellKnownServiceTypesメソッド)

環境については、
実行OSはWindowsXP SP2です。
開発環境はVisualStudio2005です。
開発言語はC#です。

どなたか詳しくご存知の方がいらっしゃいましたら、ご教授ください。
よろしくお願いいたします。



[ メッセージ編集済み 編集者: セリカ 編集日時 2006-12-26 18:11 ]
sabro
会議室デビュー日: 2006/10/19
投稿数: 17
投稿日時: 2006-12-27 02:30
RegisterWellKnownClientTypeでの登録は行わずに、Activator.GetObjectでオブジェクトを取得してみるとどうでしょうか。
_________________
sabro
ヒマをみつけてWeb開発
セリカ
会議室デビュー日: 2006/12/18
投稿数: 12
投稿日時: 2007-01-06 02:46
引用:

sabroさんの書き込み (2006-12-27 02:30) より:
RegisterWellKnownClientTypeでの登録は行わずに、Activator.GetObjectでオブジェクトを取得してみるとどうでしょうか。




sabroさん、レスありがとうございます。
そして、返信が遅くなってしまい申し訳ありません。

Activator.GetObjectを使用することにより、問題は解決はしました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)