我已经编写了一个自托管服务堆栈服务器和一个客户端,这两个桌面应用程序。 在我非常基本的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;
}
谢谢!
答案 0 :(得分:6)
制作:
HttpListenerRequest iHttpListenerRequest = (HttpListenerRequest)base.RequestContext.Get<IHttpRequest>().OriginalRequest;
string IP = iHttpListenerRequest.RemoteEndPoint.ToString().Split(':')[0];
Request.RemoteIP
一直给我服务器地址。
答案 1 :(得分:3)
ServiceStack.4.0.38
string IP = base.Request.RemoteIp;
答案 2 :(得分:2)
fwiw我必须做一些不同的事情:
HttpListenerRequest iHttpListenerRequest = (HttpListenerRequest)base.RequestContext.Get<IHttpRequest>().OriginalRequest;
string ip = iHttpListenerRequest.RemoteEndPoint.Address.ToString();