5

新しいデータセットが作成された場合、要求元のコンピューターのホスト名をデータベースに保存する必要があります。これをユーザーに明確に示すために (すべて社内用です)、ユーザーが入力するフォームに 3 つのテキストボックスとして表示します。これら 3 つのテキスト ボックスは次のように入力されます。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            txtHostname.Text = Request.UserHostName.ToString();
            txtIPAdress.Text = Request.UserHostAddress.ToString();
            txtWindowsLogin.Text = Request.LogonUserIdentity.Name.ToString();
        }
    }

ただし、テストしたクライアントに関係なく、Request.UserHostname でホスト名を指定する必要がある IP の逆引きは機能しないため、フィールドには IP アドレスが入力されます。サーバーで nslookup を使用すると、反転は正常に機能します。どこから始めればよいか、何かヒントはありますか? どうもありがとう。

4

2 に答える 2

4

これを機能させるには、 IISを構成する必要があります。または、 Dns.GetHostEntryを使用して、逆引き参照が 1 か所だけ必要な場合に実行できます。

すべてのリクエストでの逆ルックアップは、パフォーマンスに深刻な影響を与える可能性があるため、デフォルトでは有効になっていません。Dns.GetHostEntryできればルートをお勧めします。

以下は、私たちが使用する便利な逆引き方法です。

public static string ReverseLookup(string ip)
{
    if (string.IsNullOrEmpty(ip)) return ip;

     try 
     {
       return Dns.GetHostEntry(ip).Select(entry => entry.HostName).FirstOrDefault() ?? ip;
     } 
     catch(SocketException) { return ip; }
}
于 2012-09-25T15:03:05.557 に答える