我想通过ASP .NET中的连接(而不是会话状态或cookie)跟踪客户端会话。我计划通过使用客户端的IP地址和ephemeral port number来完成此操作。
您可以通过
在ASP .NET中获取IPAddressHttpContext.Current.Request.UserHostAddress
HttpContext.Current.Request.ServerVairables["REMOTE_ADDR"]
。两者都没有给你回复端口号。有另一种方法可以得到它吗?它甚至可能吗?
答案 0 :(得分:9)
HttpContext.Current.Request.ServerVariables["REMOTE_PORT"].
^^^^
也许?
答案 1 :(得分:1)
对于常规Web浏览,您无法真正做到这一点,因为客户端和服务器之间的HTTP连接并不长久。
例如,IIS7指定默认空闲超时120秒,之后连接将被拆除。
下次您的浏览器连接到服务器时,“短暂”端口号很可能已经更改(因为它是随机选择的)。
答案 2 :(得分:1)
获取当前的HTTP上下文:
如果您在MVC控制器中执行此操作,则可以直接使用控制器的HttpContext
属性。
var context = HttpContext.Current as IServiceProvider;
接下来,获取HTTP工作者请求:
var request = context.GetService(
typeof(HttpWorkerRequest)) as HttpWorkerRequest;
然后您可以获得客户端的短暂端口号:
var port = request.GetRemotePort();
答案 3 :(得分:-3)
这很有效。
string portNo = HttpContext.Current.Request.ServerVariables["SERVER_PORT"];
您可以访问: