- PR -

コンピュータ名取得エラーの対処法

1
投稿者投稿内容
さんたろう
会議室デビュー日: 2005/01/27
投稿数: 2
投稿日時: 2005-01-27 12:08
はじめまして、いつも参考にさせて頂いています。

現在Webアプリケーションで、社内システムを構築しています。
その中で、クライアントのコンピュータ名を取得したいのですが
社外からダイアルアップ(128k)で社内LANに接続した端末
(以下「外部端末」と表記)の場合、コンピュータ名を取得する部分でエラーが発生してしまいます。

<ロジック>
Dim strMachineName As String
Dim clsHostInfo As New System.Net.IPHostEntry

clsHostInfo = Net.Dns.GetHostByAddress(Request.UserHostName()) ☆
strMachineName = clsHostInfo.HostName

<エラー内容>
『System.Net.Sockets.SocketException:
要求した名前は有効ですが、要求された種類のデータは見つかりませんでした。 』

☆の部分で例外エラーになっています。
但し、社内LAN上にある端末は、コンピュータ名が取得できています。
「以前、社内LANに接続していた「外部端末」だと、
その後ダイアルアップ接続でも、コンピュータ名を取得できている」
との話も聞いていまして、「外部端末」での使用は行えないと
言い切れない状況です。そこで質問です。

@エラー内容から Dns クラスによってスローされているのだと思いますが、
現在手元で直にエラーの再現が行えない状況ですのでこのエラーの解決策を
 探る為に、どのような情報を集めれば良いのでしょうか。

ADns クラスを使用する以外に ASP.NETでコンピュータ名を取得する方法は
あるのでしょうか?調べた限りでは、無いような気がするのですが、
ASP.NETの開発経験が浅い為、判断がつきません。

コンピュータ名を取得するというのが、システムの必須条件なので困っています。
以上 ご存知の方がいらっしゃいましたらご教授願います。

(実行環境)
・アプリケーションサーバー:WindowsServer2003
・ドメインサーバー:WindowsServer2003
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-01-27 12:32
まずはネットワーク管理者に相談することをお勧めすします。これはASP.NETに限った話ではありません。ServerからクライアントPCの名前を解決するためにはどのようにネットワークを構成する必要があるのかを考えてみてください。

通常、名前解決できる範囲は同一ネットワークセグメント内に限られます。ダイアルアップしてきたクライアントパソコンは異なるネットワークセグメントに属しているので、名前解決できません。WINSサーバーを使ってコンピューターの名前解決を行うなど、ネットワークの構成から見直す必要があります。

ネットワーク構成を変更せずにComputerNameを取得するとなると、コンピューター名を取得する処理をクライアントサイドで動作させる必要があるでしょう。JavaScriptでWScript.Networkオブジェクトから取得するとか(たぶん警告が表示される。Windows+IE限定)、ActiveX併用するとか(警告が表示される。Windows+IE限定)と言った方法になってしまうかと。

目的がコンピューターごとのアクセス履歴を追跡することなら、最初にアクセスされた時にコンピューター名を登録(或いは勝手にIDを振るとか、任意の名前を決めてもらうとか)してもらいCokkieに保存しておくのが、汎用性もあって良いのではないかと・・・。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/

[ メッセージ編集済み 編集者: 甕星 編集日時 2005-01-27 12:34 ]
さんたろう
会議室デビュー日: 2005/01/27
投稿数: 2
投稿日時: 2005-01-27 14:46
甕星様

早速のお返事ありがとうございました。

ネットワーク構成を変更するのは、難しいようなので
クライアントサイドで動作させる方向で解決させたいと思います。
(JavaScriptにするかActiveXするかはこれから検討します)
やはり、最終的にはこの方法かなとは思っていましたが
ご教授頂き、確信が持てました。

今後とも宜しくお願い致します。
1

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