2017-05-02 100 views
0

我有一个工作在Debian Mono下的WCF服务。
我的目标是获取服务中的客户端IP地址。
我读过的这表明,主要解决的是类似主题的一个很大的量使用RemoteEndpointMessageProperty如何在Linux中获取WCF服务中的客户端IP?

OperationContext oOperationContext = OperationContext.Current; 
MessageProperties oMessageProperties = oOperationContext.IncomingMessageProperties; 

var prop = oMessageProperties[RemoteEndpointMessageProperty.Name]; 
RemoteEndpointMessageProperty oRemoteEndpointMessageProperty = prop as RemoteEndpointMessageProperty; 

string szAddress = oRemoteEndpointMessageProperty.Address; 
int nPort = oRemoteEndpointMessageProperty.Port; 

我也一样,如上图所示。
但问题是oMessageProperties不包含密钥RemoteEndpointMessageProperty.Name,它只有“编码器”值System.ServiceModel.Channels.BinaryMessageEncoder

任何人都知道为什么会发生这种情况,以及如何解决这个问题?

我使用NetTcpBinding的单3.2.8下

回答

0

请试试这个:

var iPAddress = HttpContext.Current.Request.UserHostAddress; 
+0

'HttpContext.Current'是'null'在我的服务。我添加了“ASP.NET兼容模式”,但它也没有帮助 – skelter

相关问题