如何找到.Net Remoting分配的端口号?

dav*_*ywc 3 .net port remoting

如果我使用端口0创建一个TcpChannel,即允许.Net Remoting分配一个可用端口,那么无论如何要确定哪个端口号已被分配?

我知道我可以在创建频道时指定端口号,但我不想这样做,因为我想在同一Citrix服务器上运行多个侦听应用程序实例 - 每个实例都在另一个端口上侦听.

理想情况下,我不希望不得不去保留一堆端口,然后跟踪已分配的端口.我只想让端口自动分配 - 但是我需要知道哪个端口号已被分配.

Mar*_*ell 5

我不太了解这一点,但是在MSDN上浏览它说明零后使用返回a TcpServerChannel,并且a TcpServerChannel有一个GetChannelUri()方法; 那包括端口号吗?(您可能需要解析,通过new Uri(s).Port).

再次,完整的猜测工作.如果没有,只要说;-p

由AakashM编辑添加这是正确的方法.以下

var channel = new TcpChannel(0);
Run Code Online (Sandbox Code Playgroud)

可以使用检索包含的服务器通道的动态分配的帖子

var channelData = (ChannelDataStore)channel.ChannelData;
var port = new System.Uri(channelData.ChannelUris[0]).Port;
Run Code Online (Sandbox Code Playgroud)

丑陋的演员是必要的,因为该TcpChannel.ChannelData属性被打字为object......