Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET中获取客户端的临时端口号?_.net_Asp.net_Tcp - Fatal编程技术网

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

如何在ASP.NET中获取客户端的临时端口号?,.net,asp.net,tcp,.net,Asp.net,Tcp,我想在ASP.NET中通过连接(而不是会话状态或cookie)跟踪客户端会话。我计划通过使用客户的IP地址和IP地址来实现这一点 您可以通过以下方式获得ASP.NET中的IP地址: HttpContext.Current.Request.UserHostAddress HttpContext.Current.Request.ServerVairables[“REMOTE\u ADDR”] 这两个都没有给你回复端口号。还有别的办法吗?有可能吗 HttpContext.Current.Reque

我想在ASP.NET中通过连接(而不是会话状态或cookie)跟踪客户端会话。我计划通过使用客户的IP地址和IP地址来实现这一点

您可以通过以下方式获得ASP.NET中的IP地址:

  • HttpContext.Current.Request.UserHostAddress
  • HttpContext.Current.Request.ServerVairables[“REMOTE\u ADDR”]
这两个都没有给你回复端口号。还有别的办法吗?有可能吗

HttpContext.Current.Request.ServerVariables["REMOTE_PORT"].
                                                    ^^^^

也许?

对于常规的web浏览,您不能真正做到这一点,因为客户端和服务器之间的HTTP连接并不长久

例如,IIS7指定默认空闲超时120秒,在此之后连接将被中断

下次浏览器连接到服务器时,“临时”端口号很可能已更改(因为它是随机选择的)。

这非常有效

string portNo = HttpContext.Current.Request.ServerVariables["SERVER_PORT"];
您可以访问:


获取当前HTTP上下文:
如果在MVC控制器中执行此操作,则可以直接使用控制器的
HttpContext
属性

接下来,获取HTTP工作者请求:

var request = context.GetService(
    typeof(HttpWorkerRequest)) as HttpWorkerRequest;
然后,您可以获得客户端的临时端口号,如下所示:

var port = request.GetRemotePort();

@马克B,这看起来很有希望。。。你可能应该把它作为答案贴出来。嘿,你知道什么。我只是在黑暗中乱刺。。。一个答案马上就来。@brandon-所以我很感兴趣……如果端口一直在变化,您将如何跟踪会话?嗯。。这是一个诊断工具。我正在这个web服务器上创建一个页面,显示谁已连接以及每个消费者打开了多少连接。我还想知道他们的交流频率和他们的用户代理。除非IIS给我一种查询它管理的连接的方法,否则我只能猜测,如果在过去120秒内看到活动,唯一的IP+端口组合意味着一个单独的连接。如果您有客户端/服务器设置,要获取客户端基地址,使用以下命令://string clientServer=HttpContext.Current.Request.ServerVariables[“HTTP_ORIGIN”]@LeviFuller HTTP应该是每个定义的客户机/服务器,对吗?此问题/答案与获取基本地址无关,因此我认为您可能在错误的位置发布了您的评论。仅供参考:我认为您发布的答案与您之前半年发布的答案几乎相同,因此遭到了否决。。。。此外,您的答案似乎是关于服务器端口,而不是请求的客户端端口。
var port = request.GetRemotePort();