我正在使用三部分通过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地址,这将是从其他机器访问我的网络上?