[英]Obtaining IP Address of Callback Channel in WCF
我在雙工通道上有一個 WCF 服務,帶有回調合同。 當客戶端在服務上調用SubscribeMe()
方法時,服務通過將OperationContext.Current.GetCallbackChannel<T>()
的結果存儲在列表中來跟蹤客戶端。 該服務將定期 ping 這些回調通道以跟蹤其有效性,並使那些已關閉或超時的通道過期。
我的問題是:當遠程主機沒有主動向我的服務發出請求時,例如當我調用MyCallbackContract.Ping()
時,我如何獲取有關遠程主機的信息?
我嘗試將回調通道 object 轉換為IContextChannel
,並訪問IContextChannel::RemoteAddress
屬性,但此屬性包含某種與回調通道上的實際遠程主機無關的命名空間 URI。
未經測試(需要一段時間才能設置所有配置):但我認為您正在尋找這樣的東西:
OperationContext context = OperationContext.Current;
MessageProperties messageProperties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpointProperty =
messageProperties[RemoteEndpointMessageProperty.Name]
as RemoteEndpointMessageProperty;
var address = endpointProperty.Address;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.