- PR -

リモートサーバー接続方法

1
投稿者投稿内容
nao
会議室デビュー日: 2005/06/27
投稿数: 6
投稿日時: 2005-06-27 14:48
現在、Windowsアプリ内にて、リモートサーバー接続処理を行おうとしています。
ですが、「基になる接続が閉じられました:リモート サーバーに接続できません」
とのエラー内容になり、接続がうまくできません。

//リモートサーバに接続
AbstractServer abstractServer = (AbstractServer)Activator.GetObject(
             typeof(AbstractServer),this.cmbServerName.Text);
と行うまでは処理は問題なく動作します。
その後、
paths = abstractServer.GetPaths();
とメソッドを呼び出すと上記エラーとなってしまいます。
色々と原因を探してみたのですが、machine.configファイルにてプロクシの設定を
行う必要があるとのことでした。
ですが、Activator.GetObjectにてサーバーまでの接続はOKになっているので、
その後の処理にて接続が閉じられましたとの原因がわかりません。

初心者で申し訳ないですが、ご教授よろしくおねがいします。

※またちなみにActivator.GetObjectメソッドとは
「指定された型と URL が示す既知のオブジェクト用にプロキシを作成します」
とのことですが、実行マシン自体にプロキシ機能ができあがるという意味
なのでしょうか?
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-06-27 16:38
AbstractServer が、サードパーティのミドルウェアな感じがしますが、
そちらのクラスリファレンスには、
「Machine.Configに対してプロキシサーバの設定を行ってください」
と書かれているのでしょうか?
もしそうなのであれば、
あとはMSDNライブラリで設定方法を見れば解決ですね。

AbstractServerと環境について、もう少しヒントをください。

※追記
Googleにて検索をしたところ
AbstractServer の検索結果のうち 日本語のページ 約 103 件
とでました。

_________________
ASP++ by Moo http://moo-asp.net/

[ メッセージ編集済み 編集者: Moo 編集日時 2005-06-27 16:40 ]
Moo
大ベテラン
会議室デビュー日: 2004/04/12
投稿数: 118
お住まい・勤務地: 地球・港
投稿日時: 2005-06-27 16:49
追加ヒントです。

[HOWTO] .NET Framework を使用して、XML Web サービス クライアントからプロキシ サーバーを介して接続できるように構成する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;307220

<defaultProxy> 要素
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/gngrfdefaultproxyelement.asp

_________________
ASP/ASP.NETだいすき。 ASP++ by Moo http://moo-asp.net/
日記は ほぼ毎日更新中 http://d.hatena.ne.jp/aspx/
nao
会議室デビュー日: 2005/06/27
投稿数: 6
投稿日時: 2005-06-27 17:06
Mooさん、ご回答ありがとうございます。
AbstractServerについてですが、独自でabstractとして定義しているクラス名に
なります。
ややこしい名前ですみません。他人作成アプリが動作しないので調査しています。

「Machine.Configに対してプロキシサーバの設定を行ってください」
ちなみに上記の内容についてですが、エラーメッセージをキーにWeb検索を行った
ところ、http://support.microsoft.com/default.aspx?scid=kb;ja;JP307220
の設定が必要だと記述されていましたので、そうなのかなと考えていました。

また現在の実行環境についてですが、社内のLAN内にてローカルマシンを
サーバー&クライアントとして行っています。
それでもプロキシの設定は必要なのかと疑問に思っています。
-----Server
HttpChannel chan = new HttpChannel(8888);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Impl.Server),
"test", WellKnownObjectMode.SingleCall);

-----Cliant
AbstractServer abstractServer = (AbstractServer)Activator.GetObject(
typeof(AbstractServer), "http://localhost:8888/test");

nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-06-27 17:37
こんにちは。

>「基になる接続が閉じられました:リモート サーバーに接続できません」

>また現在の実行環境についてですが、社内のLAN内にてローカルマシンを
>サーバー&クライアントとして行っています。
>それでもプロキシの設定は必要なのかと疑問に思っています

逆にIEのプロキシ設定をはずしてみたらどうなるでしょうか?
前に、IEのプロキシ設定がされていることにより同一のエラーが発生したことがあります。

あと、気になるのですが、Impl.ServerクラスとAbstractServerクラスは同一のものでしょうか?
(Impl.Serverクラスの親クラスがAbstractServer?)
生成は成功しているということなので、多分そうだと思われますが、違ってたらそのあたりに原因があるのかも。
nao
会議室デビュー日: 2005/06/27
投稿数: 6
投稿日時: 2005-06-27 17:50
noderaさん、ご回答ありがとうございます。

>逆にIEのプロキシ設定をはずしてみたらどうなるでしょうか?
>前に、IEのプロキシ設定がされていることにより同一のエラーが発生したことが
>あります。
試してみましたが、エラーメッセージは同一でした。

また、Machine.Configファイルにて
<proxy usesystemdefault="false"
  proxyaddress="http://[サーバーIP]:8888/"
  bypassonlocal="true" />
<bypasslist>
  <add address="http://[接続クライアントIP]/" />
</bypasslist>
と設定してみましたが、現象は変わりませんでした。。

>あと、気になるのですが、Impl.ServerクラスとAbstractServerクラスは同一のもので
>しょうか?
>(Impl.Serverクラスの親クラスがAbstractServer?)
Impl.ServerクラスがAbstractServerクラスを継承しています。

これまでリモート処理を行ったことがなかったですが、
かなり複雑ですね。でも色々ログを見ていますが、原因はプロクシだと
言っている方がおおいですし。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20252&forum=7
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-06-27 18:15
引用:

naoさんの書き込み (2005-06-27 17:06) より:
-----Server
HttpChannel chan = new HttpChannel(8888);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Impl.Server),
"test", WellKnownObjectMode.SingleCall);

-----Cliant
AbstractServer abstractServer = (AbstractServer)Activator.GetObject(
typeof(AbstractServer), "http://localhost:8888/test");


詳しくは知りませんが、気になるとしたら
・サーバ側のobjectUriは、testなんて名称だけでOKでしたっけ?(フルのUriが必要ではない?)
・サーバは何で動かしているのでしょうか?(サービス?)
 IISだといろいろ制約もあります。
・クライアントでのチャネルのセットアップはどうやってるんでしょうか?
て辺りですかね。
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2005-06-27 20:10
こんにちは。
もう一点気になったところを。

>HttpChannel chan = new HttpChannel(8888);

ここを、
HttpServerChannel chan = new HttpServerChannel(8888);
にしてみたらどうなるでしょうか?
1

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