28


5

IPV6が無効な場合でも、IPV6(:: 1)を返すIIS Request.UserHostAddress

Windows Server 2008のネットワークカードのプロパティセクションで、IPV6を無効にし、IPV4のみを有効にします。

ただし、ASP.NETでは、Request.UserHostAddressはIPV6アドレスである「

1」を返します。

IPV4に戻す方法はありますか?

3 Answer


31


Rollaの4人のWebサイトには、http://www.4guysfromrolla.com/articles/071807-1.aspx [こちら]というソリューションがあり、これをアプリで使用しました。

更新:

このリンクが機能しなくなった場合に備えて、このリンクに基づいたコードを次に示します。

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();
}


23


localhost(

1 / 127.0.0.1)に接続している場合、サーバーにあるネットワークカードではなく、Windowsにある仮想カードのように使用しています。 システム全体からサポートを削除せずにループバックカードを構成し、そこからIPv6を削除する方法はとにかくないと思いますが、Win2008ではおそらくそれを行うことはできません。

ネットワークパケットキャプチャユーティリティを実行することで、物理カードが使用されていないことを確認できます。 Windowsでは、仮想ループバックカードを通過するトラフィックを傍受することはできません。

ただし、別のマシンから(物理カードを通過する接続を介して)アクセスする場合、 `Request.UserHostAddress`によって返されるIPv4アドレスが表示されるはずです。


4


  1. [スタート]に移動→ [コントロールパネル]をクリック→をクリック [コントロールパネル]ウィンドウで[ネットワークステータスとタスクを表示]→ [ネットワークと共有センター]ウィンドウで[アダプター設定の変更]をクリックします。

  2. 「ネットワーク接続」ウィンドウが表示されます。 ここで右クリックします IPv6を無効にする「ネットワークアダプター」(ワイヤレスアダプターまたは有線イーサネットアダプター)を選択し、「プロパティ」をクリックします。

  3. 「ネットワークアダプタのプロパティ」ウィンドウで、チェックを外します 「インターネットプロトコルバージョン6(TCP / IPv6)」を選択し、[OK]をクリックします。

  4. コマンドプロンプトに「regedit」と入力してレジストリエディターを起動し、 レジストリエディターで次のレジストリ項目を見つけます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
  1. `DisabledComponents`アイテムが利用できない場合、それを作成する必要があります [編集]→ [新規]→ [DWORD(32ビット)値]に移動し、値を「0xffffffff」に設定します(「ffffffff」と入力するだけです)。 これにより、IPv6ループバックインターフェイスを除くすべてのIPv6機能が無効になり、最後に[OK]をクリックします。

  2. コンピュータを再起動してください。