我正在使用三部分通過HTTP進行通信的系統。這些部分是Service,ServiceRegistry和Client。 Service和ServiceRegistry是自託管的OWIN應用程序。客戶的性質並不重要。當請求者在本地計算機上時,從OWIN中的請求者獲取可路由的IPV6地址
在我的設計中,服務POST
S到ServiceRegistry以「註冊」本身。所述ServiceRegistry讀取Request.GetOwinContext().Request.RemoteIpAddress
以確定服務所在並GET
發回給服務執行一些握手(端口此GET
在原始POST
被供給)。最後,客戶端出現並向ServiceRegistry執行一個GET
,詢問服務的位置,並接收它可以直接與服務交互的IP地址和端口。
當所有三個部件都在不同的機器上運行時,此功能很好。
然而,當配置的是,服務和的ServiceManager是在MACHINE01運行,並且客戶端上運行MACHINE02系統出現故障。看起來正在發生的是(當兩個部分位於同一臺機器上時)RemoteIpAddress
收到IPV6地址的鏈路本地版本。我從IPV6地址剝離Scope ID並將地址和端口返回給客戶端。但是,對於在另一臺機器上運行的客戶端,這是一個無法訪問的地址。
任何人都可以建議我怎麼能以這樣的方式讀取來自OWIN請求遠程IP地址,這將是從其他機器訪問我的網絡上?