我有一个在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
答案 0 :(得分:0)
请试试这个:
var iPAddress = HttpContext.Current.Request.UserHostAddress;