如何获得ASP .NET中客户端的临时端口号?

时间:2011-08-24 21:22:19

标签: .net asp.net tcp

我想通过ASP .NET中的连接(而不是会话状态或cookie)跟踪客户端会话。我计划通过使用客户端的IP地址和ephemeral port number来完成此操作。

您可以通过

在ASP .NET中获取IPAddress
  • HttpContext.Current.Request.UserHostAddress
  • HttpContext.Current.Request.ServerVairables["REMOTE_ADDR"]

两者都没有给你回复端口号。有另一种方法可以得到它吗?它甚至可能吗?

4 个答案:

答案 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"];

您可以访问:

http://www.w3schools.com/asp/coll_servervariables.asp