我正在用WCF服务替换现有的Web服务,作为迁移的第一步,我将使用BasicHttpBinding公开一个端点,直到客户端在今年晚些时候升级。
计划是使用Windows服务托管新的WCF服务(该服务只能在Intranet内调用,所以不需要HTTP),但是暴露基本HTTP和Net.TCP端点以便迁移可以分阶段发生。
但是,我在WCF服务中获取调用者的主机名时遇到一些麻烦,查看当前正在使用Context.Request.UserHostName获取主机名的Web服务代码。我设法获得了呼叫者的用户名和IP地址,但环境中所有相关的权限/安全服务都使用主机名而不是IP,所以有什么办法让我在我的服务中获取HostName吗?
P.S。我将安全模式设置为TransportCredentialOnly,clientCredieTypeType设置为Windows
答案 0 :(得分:10)
由于您未在IIS中托管,因此无法使用ASP.NET compatibility mode来访问通常存在于ASP.NET进程中的HttpContext
。
相反,您可以使用GetHostEntry
method中Dns
class上的System.Net
namespace获取IPHostEntry
instance,其中包含IP地址的别名(DNS名称)你正在获得。