C#でasp.netWebページを取得しました。私たちがやりたいことの1つは、IPアドレスを含むサイトへのヒットを追跡することです。私はいくつかのコードを実装しましたが(SOのおかげで)、ログに記録されたIPアドレスは常にローカルのようです。 ISPですが、ログには常に同じ2〜3個の異なる内部IPアドレスがリストされます(日が経つにつれて少し変わるようです)。
これがIPを取得する私の関数です(これもSOへの投稿のおかげです):
protected IPAddress GetIp(HttpRequest request)
{
string ipString;
if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
ipString = request.ServerVariables["REMOTE_ADDR"];
else
ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
IPAddress result;
if (!IPAddress.TryParse(ipString, out result))
result = IPAddress.None;
return result;
}
public void logHit()
{
IPAddress ip = GetIp(Request);
string sIP = ip.ToString();
}
私もこれを試しましたが、同じ結果が得られました:
HttpContext.Current.Request.UserHostAddress;
appspotのサービスのようなものを使用してクライアント側で電話をかけると、問題なく機能します。
<script type="application/javascript">
function getip(json) {
//txtIP is a input box on the form
document.getElementById("txtIP").value = json.ip;
}
</script>
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
そのappspotリンクを押して解析することで、ラウンドアバウトの方法を実行できると思いますが、それは単純なはずの何かにとっては非常に多くの問題のように思えます。
サーバー上のIISでしょうか?ある種のリダイレクトが起こっていますか?ログに記録されるIPアドレスはサーバーではありません。問題は、私はそれに直接アクセスできないので、それを管理している人たちと話をしなければならず、彼らが物事を変え始める前に彼らにいくつかの指示を与えたいと思っています。
ありがとう
アーニー