2011年08月05日

webサーバーでデバッグを開始できません

WindowsXPでVisual Studio 2010を使ってWebアプリを作成中、途中からIISを入れてWebサーバ上でデバッグしようとしたところ、「webサーバーでデバッグを開始できません」というエラーが出た。(下図)

エラー画面

散々調べまわった挙句、ヘルプに書かれた次の一言で原因が判明。
ローカル コンピューター (Visual Studio を実行するコンピューター) で、Visual Studio をインストールした後に IIS をインストールしましたか。 IIS は、Visual Studio の前にインストールする必要があります。 後でインストールすると、ASP.NET の再登録が必要になることがあります。

ASP.NETを再登録するには
コマンド プロンプト ウィンドウで、「systemroot\Microsoft.NET\Framework\ versionNumber \aspnet_regiis -i」というコマンドを実行します。 (下図)

ASP.NETの再登録

これで無事デバッグができるようになった。...確か以前にも同じ羽目に陥ったと記憶している(^^;

posted by なっちゃん at 20:22| 静岡 ☔| Comment(0) | TrackBack(0) | ASP.NET Tips | このブログの読者になる | 更新情報をチェックする

2011年08月01日

IPアドレスの取得時の注意

FTPクライアントを作った時、WindowsXPの開発環境では問題なく動作していたのが、本番環境のWindowsServer2008ではハングアップしてしまった。最初はファイヤーウォールが問題かと考えいろいろ設定したのだが一向に解消されない。
仕方なく本番環境と同じWindowsServer2008にVisualStudioをインストールして動作確認したところ、やっと原因が判明した。

問題は自分のIPアドレスを取得する際の Dns.GetHostEntry(Dns.GetHostName()).AddressList(0) に問題があった。

XPまでなら、IPアドレスはIPv4つまり、192.168.0.0などで表現されるIPアドレスが取得されるが、Vista以降ではネットワークアダプタにIPv6のインターネットプロトコルが標準で有効になっているのでAddressList(0)ではIPv4ではなくIPv6のアドレスが取得されてしまうからだった。

そこでIPv4を確実に取得するように以下の修正が必要になる。
(Imports System.Net を忘れずに)

Dim ipa As IPAddress
Dim iphEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
For Each ipAddr As IPAddress In iphEntry.AddressList
If ipAddr.AddressFamily = Sockets.AddressFamily.InterNetwork Then
ipa = ipAddr
Exit For
End If
Next

AddressFamilyを調べることでIPv4かIPv6か判定できる。
IPv4=Sockets.AddressFamily.InterNetwork
IPv6=Sockets.AddressFamily.InterNetworkV6
posted by なっちゃん at 17:43| 静岡 ☔| Comment(0) | TrackBack(0) | VB.NET Tips | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。