如何获取IIS中托管的任何站点的服务器名称和托管站点名称?

时间:2016-04-14 09:32:01

标签: c# asp.net iis dll iis-7

我在IIS中托管了一个站点并运行了该应用程序。我有一个exe在从MSMQ读取条目后执行操作。所以基本上应用程序在MSMQ中添加任务,exe读取该任务并执行它。

我还有一个单独的dll在那个dll中我正在动态地准备一些html的href链接。为此,我需要服务器dns和托管网站名称。

来自此网址的

Ex:http://localhost/mysite/login.aspx 我只需要http://localhost/mysite

我在exe执行的任务之一中使用此自定义dll。

现在问题是我不知道如何获取dns和网站名称,因为自定义dll不会拥有HttpContext.Current对象。

3 个答案:

答案 0 :(得分:3)

GetHostEntryGetHostName一起使用,以获取您拨打电话的计算机的DNS主机名。

var hostname = Dns.GetHostEntry(Dns.GetHostName()).HostName;

要获取IIS虚拟目录,请按照操作系统帖子How to get the IIS virtual dir & web application's physical paths with C# code中说明的说明进行操作:

ServerManager serverManager = new ServerManager();

// get the site (e.g. default)
Site site = serverManager.Sites.FirstOrDefault(s => s.Name == "Default Web Site");

// get the application that you are interested in
Application myApp = site.Applications["/Dev1"];

// get the physical path of the virtual directory
Console.WriteLine(myApp.VirtualDirectories[0].PhysicalPath);

答案 1 :(得分:0)

你找那个asp.net函数

GetHostEntry(string hostNameOrAddress)

还有其他商业图书馆包含我喜欢的aspNetDns类似功能。

答案 2 :(得分:-1)

我不确定我是否完全理解您的问题,但是如何在服务器上的PATH中保存您需要的URL并在DLL中读取它?