- PR -

ノータッチデプロイメントでTCP/IP接続が遅い

1
投稿者投稿内容
むちん
会議室デビュー日: 2004/05/25
投稿数: 8
投稿日時: 2004-05-25 20:29
下記の現象の原因がわからず困っております.解決策や関連情報ありましたら
よろしくお願いします.

<現象>
VB.NETで作成したWindowsアプリケーションの.exeをノータッチデプロイメント
で起動するとTCP/IPでの接続処理に時間がかかってしまう.
同じアプリを通常のローカルの.exe起動で実行すると一瞬で返ってきますが,
ノータッチデプロイメントで起動すると約1分半ほどかかってしまいます.
下記のようなコード(フォームにボタン1個配置)です.

コード:
    Private Sub Button1_Click(ByVal sender As System.Object, _
                      ByVal e As System.EventArgs) Handles Button1.Click
        'TCP接続を行う
        Dim tcpClient As New System.Net.Sockets.TcpClient()
        Try
            tcpClient.Connect("localhost", 80)
            MessageBox.Show("接続成功!", "実行結果")
            tcpClient.Close()
        Catch ex As Exception
            '接続が出来なかった場合は例外が発生する
            MessageBox.Show(ex.ToString(), "エラー")
        End Try
    End Sub



<環境など>
・VS.NET 2003
・開発機:Win2000
・実行機:Win2000,WinXP
・IIS稼動中
・アクセス許可セットは設定済み(FullTrust)

<最終的にやりたいこと>
ノータッチデプロイメントで起動したWindowsアプリケーション同士のプロセス間通信を
.NETリモーティングで実装したい.
この検証中に同様の問題が発生し,原因特定中の作業において,ネットワーク(TCP/IP)接続
の処理に時間がかかってしまうという上記の現象に行き着きました.
むちん
会議室デビュー日: 2004/05/25
投稿数: 8
投稿日時: 2004-06-07 16:26
MSDN テクニカルサポート へ問い合わせしまして回避策を教えていただきました.

・現象の発生背景について
アプリケーションで Socket を使用した際に、パフォーマンスカウンタと構成ファイル (config ファイル) の
初期化が行われる処理においてデッドロックが発生している可能性がある。
この現象は環境に依存する現象として確認されており、アプリケーションは config ファイルの有無に関わらず
本ファイルを検索するため、実際に config ファイルが存在しないアプリケーションでも本現象が発生する可能
性がある。

・対処方法について
今回の現象が上記の原因に起因したものである場合は、Socket 接続の際に構成ファイル
(config ファイル) の初期化が行われないように、Socket 接続を行う前に config
ファイルの初期化を完了するような処理を行うことで回避することが可能。
具体的にはユーザーコントロールのコンストラクタで、下記の記述により回避可能。

コード:
System.Configuration.ConfigurationSettings.GetConfig("Dummy")


上記の処理により config ファイルの初期化が完了したことになり、Socket 使用時に
config ファイル初期化の処理が行われなくなくなるので、本現象を回避することが可能。
上記の回避策を実装するために config ファイルは必要ない。

とのことでした.
試したところ,現象を回避することができました.
1

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