如何在Linux中的WCF服务中获取客户端IP?

时间:2017-05-02 19:44:10

标签: c# wcf mono

我有一个在Debian中使用Mono工作的WCF服务 我的目标是在服务中获取客户端IP地址 我已经阅读了大量类似的主题,这些主题表明主要解决方案是使用RemoteEndpointMessageProperty

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

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

我在Mono 3.2.8下使用NetTcpBinding

1 个答案:

答案 0 :(得分:0)

请试试这个:

var iPAddress = HttpContext.Current.Request.UserHostAddress;