Windows Server 2008のネットワークカードのプロパティセクションで、IPV6を無効にし、IPV4のみを有効にします。
ただし、ASP.NETでは、Request.UserHostAddressはIPV6アドレスである「:: 1」を返します。
誰かがIPV4に戻す方法を知っていますか?
Localhost(:: 1/127.0.0.1)に接続している場合は、サーバーにあるネットワークカードではなく、Windowsにある仮想カードを使用しています。システム全体からサポートを削除せずにループバックカードを構成してIPv6を削除する方法はないと思いますが、Win2008ではおそらくそれを行うことはできません。
ネットワークパケットキャプチャユーティリティを実行して、物理カードが使用されていないことを確認できます。 Windowsでは、仮想ループバックカードを通過するトラフィックを傍受することはできません。
つまり、別のマシンから(物理カードを通過する接続を介して)アクセスすると、Request.UserHostAddress
からIPv4アドレスが返されることがわかります。
Rollaのウェブサイトの4人の男性には、アプリで使用した解決策 here があります。
更新:
このリンクが機能しなくなった場合に備えて、このリンクに基づくコードを次に示します。
public string GetIpAddress()
{
string ipAddressString = HttpContext.Current.Request.UserHostAddress;
if (ipAddressString == null)
return null;
IPAddress ipAddress;
IPAddress.TryParse(ipAddressString, out ipAddress);
// If we got an IPV6 address, then we need to ask the network for the IPV4 address
// This usually only happens when the browser is on the same machine as the server.
if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
{
ipAddress = System.Net.Dns.GetHostEntry(ipAddress).AddressList
.First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
}
return ipAddress.ToString();
}
スタート->コントロールパネルをクリック->コントロールパネルウィンドウで_View network status and tasks
_をクリック-> _change adapter settings
_ウィンドウで_Network and Sharing Center
_をクリック.
_Network Connections
_ウィンドウが表示されます。ここで、IPv6を無効にする_network adapter
_(ワイヤレスアダプターまたは有線イーサネットアダプターのいずれか)を右クリックして、Properties
をクリックします。
_network adapter properties
_ウィンドウで、Internet Protocol Version 6 (TCP/IPv6)
のチェックを外し、[OK]をクリックします。
コマンドプロンプトにregedit
と入力してレジストリエディターを起動し、レジストリエディターで次のレジストリアイテムを見つけます。
_HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
_
DisabledComponents
アイテムが利用できない場合は、[編集]-> [新規]-> [DWORD(32ビット)値]に移動して値を_0xffffffff
_に設定する(ffffffff
と入力する)ことで、次の形式で作成する必要があります。これにより、IPv6ループバックインターフェイスを除くすべてのIPv6機能が無効になり、最後にOK
をクリックします。
コンピュータを再起動します。