Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
C# 确定HTTP响应来自哪个NIC_C#_.net_Http_Network Programming - Fatal编程技术网

C# 确定HTTP响应来自哪个NIC

C# 确定HTTP响应来自哪个NIC,c#,.net,http,network-programming,C#,.net,Http,Network Programming,我的桌面上有多个NIC。我正在使用HTTP与一台服务器通信。当我发送和接收响应时。我想知道在所有的NIC中,哪一个被用来为特定的HTTP请求进行通信 我需要知道这一点,因为有多个NIC可以连接到专用网络,并且只有一个NIC连接到我想要为其托管回调URL的所需HTTP服务器。我正在使用C#,.NET4.0 任何帮助都将不胜感激。您不能真正询问请求来自哪个NIC,因为您不应该在意。但您可以获取请求传入的IP: var localAddress = Request.ServerVariables["L

我的桌面上有多个NIC。我正在使用HTTP与一台服务器通信。当我发送和接收响应时。我想知道在所有的NIC中,哪一个被用来为特定的HTTP请求进行通信

我需要知道这一点,因为有多个NIC可以连接到专用网络,并且只有一个NIC连接到我想要为其托管回调URL的所需HTTP服务器。我正在使用C#,.NET4.0


任何帮助都将不胜感激。

您不能真正询问请求来自哪个NIC,因为您不应该在意。但您可以获取请求传入的IP:

var localAddress = Request.ServerVariables["LOCAL_ADDR"];

您可以找到有关服务器变量的更多信息。

正如Dave Van den Eynde所说,此外,这还可以获取计算机上适配器的IP地址:-

  foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces())
  {
    Console.WriteLine("Name: " + netInterface.Name);
    Console.WriteLine("Description: " + netInterface.Description);
    Console.WriteLine("Addresses: ");
    IPInterfaceProperties ipProps = netInterface.GetIPProperties();
    foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses)
    {
      Console.WriteLine(" " + addr.Address.ToString());
    }
    Console.WriteLine("");
  }

.NET的HTTPWebRequest和相关对象不会将LocalEndpoint信息放在堆栈上。如果使用FiddlerCore之类的方法,可以在每个接口上尝试请求,也可以使用如下技术:尝试推断哪个本地适配器用于进行中的连接


但是,一般来说,这种方法将是脆弱的,你应该仔细考虑你是否真的需要这个特性。

听起来对我来说是一个非常脆弱的应用程序。@安得烈,我认为有正当理由想要这样做。谢谢……这将列出我桌面上所有的NIC。我想使用NIC与HTTP服务器进行通信。有时它可能是一个Wifi适配器,或者用户可以使用VPN访问,也可以像Dave Van den Eynde说的那样查看传入的IP地址,然后在列表中迭代查找该IP地址。谢谢@EricLaw-MSFT,正如我提到的Hanks@EricLaw-MSFT,有没有其他选择来确定哪个适配器最适合承载回调URL它可以接收来自特定HTTP服务器的事件,该服务器将发送错误以响应请求。我使用GETBestInterface(),但当用户使用VPN登录时,它没有提供最佳匹配,它返回的数字范围为64xxx