在WCF中获取调用者的主机名

时间:2009-02-19 16:07:47

标签: c# wcf dns wcf-security

我正在用WCF服务替换现有的Web服务,作为迁移的第一步,我将使用BasicHttpBinding公开一个端点,直到客户端在今年晚些时候升级。

计划是使用Windows服务托管新的WCF服务(该服务只能在Intranet内调用,所以不需要HTTP),但是暴露基本HTTP和Net.TCP端点以便迁移可以分阶段发生。

但是,我在WCF服务中获取调用者的主机名时遇到一些麻烦,查看当前正在使用Context.Request.UserHostName获取主机名的Web服务代码。我设法获得了呼叫者的用户名和IP地址,但环境中所有相关的权限/安全服务都使用主机名而不是IP,所以有什么办法让我在我的服务中获取HostName吗?

P.S。我将安全模式设置为TransportCredentialOnly,clientCredieTypeType设置为Windows

1 个答案:

答案 0 :(得分:10)

由于您未在IIS中托管,因此无法使用ASP.NET compatibility mode来访问通常存在于ASP.NET进程中的HttpContext

相反,您可以使用GetHostEntry methodDns class上的System.Net namespace获取IPHostEntry instance,其中包含IP地址的别名(DNS名称)你正在获得。