2017-05-02 145 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

相關問題