3

私は自己ホスト型のサービススタック サーバーとクライアントを作成しました。どちらもデスクトップ アプリケーションです。私の非常に基本的な PING テスト サービスでは、クライアントの IP を取得しようとしています。サーバーは 192.168.0.87:82 にあり、クライアントは同じコンピューターと別のコンピューターで試しましたが、RemoteIp と UserHostAddress は常に 192.168.0.87:82 を返します。XRealIp がヌルです。base.Request.RemoteIp も試しましたが、まだ 192.168.0.87:82 です。

私は何を間違っていますか?

public RespPing Any(ReqPing request)
    {
        string IP = base.RequestContext.Get<IHttpRequest>().RemoteIp;
        string MAC = request.iTransactionInfo.MAC;

        Log(MAC,IP, base.RequestContext.Get<IHttpRequest>().RemoteIp + base.RequestContext.Get<IHttpRequest>().XRealIp + base.RequestContext.Get<IHttpRequest>().UserHostAddress);

        RespPing response = new RespPing { Result = "PONG" };

        return response;
    }

ありがとう!

4

3 に答える 3

6

それを作った:

HttpListenerRequest iHttpListenerRequest = (HttpListenerRequest)base.RequestContext.Get<IHttpRequest>().OriginalRequest;

string IP = iHttpListenerRequest.RemoteEndPoint.ToString().Split(':')[0]; 

Request.RemoteIPサーバーアドレスを教え続けました。

于 2013-04-19T08:35:11.373 に答える
2

fwiw私は少し違うことをしなければなりませんでした:

HttpListenerRequest iHttpListenerRequest = (HttpListenerRequest)base.RequestContext.Get<IHttpRequest>().OriginalRequest;
string ip = iHttpListenerRequest.RemoteEndPoint.Address.ToString();
于 2013-05-04T03:29:52.043 に答える