5

アプリケーションをプロキシ サーバーの背後に配置する必要がある状況があります。これにより、アプリケーションに送信されるすべての要求が、プロキシ サーバーで使用される同じ IP アドレスのセットを持つことになります。ただし、プロキシ サーバーは、リクエスターの実際の IP アドレスを知ることができるように、アプリケーションを通じて使用できるカスタム ヘッダーでリクエスターの実際の IP アドレスを提供します。これは主にロギングと追跡に使用されます。UserHostAddress プロパティがこのカスタム ヘッダーから値を返すようにする方法はありますか? このプロパティは約数百回参照されるため、これにより多くの作業が節約されます。

4

3 に答える 3

3

UserHostAddress プロパティの動作を変更することはできませんが、Request クラスに拡張メソッド (GetRealUserHostAddress() など) を追加し、UserHostAddress でグローバル置換を行うだけで、すぐに整理できます -> GetRealUserHostAddress()ソリューション内のそのすべてのインスタンス。

public static string GetRealUserHostAddress(this HttpRequestBase request)
{
    return request.Headers["HeaderName"] ?? request.UserHostAddress;
}
于 2012-08-08T14:50:27.417 に答える
1

プロキシが要求を行っているクライアントの実際の IP アドレスを返すと言っている場合、UserHostAddressそれを読み取るために を使用する必要はありません。ヘッダーを直接読み取るだけです。

string realIP = HttpContext.Request.Headers["actual_header_key"];
于 2012-08-08T14:26:00.137 に答える
1

いいえ、できません。カスタム ヘッダーを読み取ってリクエスト コンテキストに配置し、後で使用することができます。

于 2012-08-08T14:26:12.493 に答える