2016-04-14 5 views
0

Я разместил один сайт в IIS и запустил приложение. У меня есть один exe, который выполняет операцию после чтения записей из MSMQ. Таким образом, в основном приложение добавляет задачу в MSMQ, а exe читает эту задачу и выполняет ее.Как получить имя сервера и имя хоста на любом сайте, размещенном в IIS?

У меня есть отдельная dll и в этой dll. Я подготавливаю href ссылку html динамически. Для этого мне нужны серверные DNS и размещенные sitename.

Ex: http://localhost/mysite/login.aspx от этого url Мне нужно только http://localhost/mysite.

Я использую эту пользовательскую dll в одной из задач, выполняемой exe.

Теперь проблема заключается в том, что я не знаю, как получить DNS и имя сайта, поскольку пользовательская dll не будет иметь объект HttpContext.Current.

ответ

3

Используйте GetHostEntry вместе с GetHostName, чтобы получить имя хоста DNS, на котором вы совершаете вызов.

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

Чтобы получить виртуальный каталог IIS, следуйте инструкциям объяснены в должности OS 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); 
+0

это даст мне имя хоста, но как я получу виртуальное имя каталога приложения, которое размещено в IIS? – Mukund

-1

Я не уверен, что полностью понял вашу проблему, но как насчет того, чтобы сохранить URL-адрес, который вам нужен в PATH на сервере, и прочитать его в своей DLL?

+0

Как это логично? «Я не понимаю проблему, но вот ответ ...» и программирование о логике. – Aristos

+0

. Если вам нужна дополнительная информация по вопросу, вам следует написать комментарий, и вы должны написать ответ, если он у вас есть. – Afnan

0

Глядит для этой функции asp.net

GetHostEntry(string hostNameOrAddress)

Есть также другие коммерческие библиотеки, которые содержат аналогичные функции, такие как aspNetDns, что я предпочитаю.

+0

это даст мне имя хоста, но как я получу виртуальное имя каталога приложения, которое размещено в IIS? – Mukund

 Смежные вопросы

  • Нет связанных вопросов^_^