在 WCF 中获取调用者的主机名
Posted
技术标签:
【中文标题】在 WCF 中获取调用者的主机名【英文标题】:Getting caller's hostname in WCF 【发布时间】:2010-10-08 15:17:44 【问题描述】:我正在用 WCF 服务替换现有的 Web 服务,作为迁移的第一步,我将使用 BasicHttpBinding 公开一个端点,直到今年晚些时候升级客户端。
计划是使用 Windows 服务托管新的 WCF 服务(该服务只会从 Intranet 中调用,因此实际上不需要 HTTP),但同时公开 Basic HTTP 和 Net.TCP 端点,以便迁移可以分阶段进行。
但是,我在 WCF 服务中获取调用者的主机名时遇到了一些问题,查看当前使用 Context.Request.UserHostName 获取主机名的 Web 服务代码。我已设法获取调用者的用户名和 IP 地址,但环境中的所有相关权限/安全服务都使用主机名而不是 IP,那么我有什么方法可以在我的服务中获取主机名吗?
附:我已将安全模式设置为 TransportCredentialOnly,并将 clientCredentialType 设置为 Windows
【问题讨论】:
【参考方案1】:由于您不是在 IIS 中托管,因此您无法使用 ASP.NET compatibility mode 访问通常存在于 ASP.NET 进程中的 HttpContext
。
相反,您可以在System.Net
namespace 中的Dns
class 上使用GetHostEntry
method 来获取IPHostEntry
instance,其中将包含您正在获取的IP 地址的别名(DNS 名称)。
【讨论】:
以上是关于在 WCF 中获取调用者的主机名的主要内容,如果未能解决你的问题,请参考以下文章
自托管 WCF 服务和 basicHttpBinding:绑定不提供表示调用者的 Windows 标识