WCF:如何获取主机IP或服务器名称

问题描述 投票:15回答:6

我有一个通过IIS托管在多个Web服务器的WCF服务。我有一个记录到数据库的调用一个测井方法,我想记录的调用执行上的服务器。

有谁知道如何获取WCF调用正在执行的主机服务器名或IP地址?

wcf
6个回答
13
投票

使用Dns.GetHostName(),因为它是更好的获得比电脑主机IP的名称。考虑当你的主机有多个IP地址,拥有虚拟网卡(VMWare的)。


5
投票

这对我们来说是什么工作。请确保您有System.ServiceModel的引用。然后实现在您的服务方法下面的代码:

var context = System.ServiceModel.OperationContext.Current;

RemoteEndpointMessageProperty property = (RemoteEndpointMessageProperty)context.IncomingMessageProperties[RemoteEndpointMessageProperty.Name];

string externalIP = property.Address;

1
投票

Dns.GetHostName()是我用得最多。


1
投票
Environment.MachineName 

正是如此


0
投票

DNS主机名不起作用,因为许多服务器有多个主机名,你不知道该服务被称为哪一个。 IIRC,IIS可以调用基于该主机名被指定使事情更糟的是对不同的网络服务。使用.Current是巨大的,如果你没有运行一个实例,在这种情况下,你不要总是有一个非空的上下文对象,这是我的情况下,上述所有的。如果任何人有任何更坚实的,请分享:)


0
投票

您可以使用下面的代码来获得服务器(主机)的当前基地址。

using System.ServiceModel;

var baseAddress = OperationContext.Current.Host.BaseAddresses[0].Authority;
© www.soinside.com 2019 - 2024. All rights reserved.