我有一个在IIS上运行的Web服务(6或7,无所谓),我想知道调用者从其发送请求/调用的端口。
因此,如果客户在我的网络服务上拨打电话,我如何从服务器端找出他们拨打电话的端口号是什么?
甚至在最低级别甚至会传递一些东西?为了清楚起见我不是在寻找用于回调目的的端口。它只用于记录。
答案 0 :(得分:0)
如果您的服务是在WCF上,那么:
OperationContext context = OperationContext.Current;
MessageProperties messageProperties = context.IncomingMessageProperties;
var endpointProperty = messageProperties[RemoteEndpointMessageProperty.Name]
as RemoteEndpointMessageProperty;
if (endpointProperty != null)
{
string sRemoteAddress = endpointProperty.Address;
int nRemotePort = endpointProperty.Port;
}
答案 1 :(得分:0)
TCP套接字确实具有发送方端口号的概念,但它在应用程序级协议中没有多大用处。也就是说,考虑到OP的最后一段,我认为你正在寻找回调客户端的方法。我之前说的端口不能用于此。异步请求与在单独的线程上运行的同步请求相同,没有什么特别之处。
答案 2 :(得分:0)
您应该能够在Server对象的服务器变量中找到它“REMOTE_PORT”。
但是,此端口几乎总是随机的,并且仅对客户端正在进行的请求/响应对有效。它应该不能用于异步回调。在呼叫其他服务时,即使您的Web服务也会使用随机端口号来发起请求。通信中唯一的静态端口是TCP连接服务器端的接收端口。
答案 3 :(得分:0)
某些网络地址转换类型的设备会隐藏您的实际“发送”端口号。然后,您将可以访问无用的IP地址和无用的端口号。