Приложение IIS / ASP.NET и вспомогательное приложение: как использовать два имени хоста без перенаправления? - PullRequest
1 голос
/ 18 марта 2009

У нас есть веб-приложение на нашем сервере в каталоге

 c:\inetpub\wwwroot\myapp

Внутри каталога myapp есть подкаталог с именем mysubapp. mysubapp имеет свой собственный каталог bin и требует DLL в каталоге myapp\bin

Итак, каталоги выглядят следующим образом:

c:\inetpub\wwwroot\myapp
c:\inetpub\wwwroot\myapp\bin
c:\inetpub\wwwroot\myapp\mysubapp
c:\inetpub\wwwroot\myapp\mysubapp\bin

В настоящее время IIS настроен с заголовками узлов, поэтому myapp.mycompany.com указывает на c:\inetpub\wwwroot\myapp, а http://mysubapp.mycompany.com перенаправляет на http://myapp.mycompany.com/mysubapp.

Мы хотим, чтобы mysubapp.mycompany.com указывал на c:\inetpub\wwwroot\myapp\mysubapp без указания URL-адреса http://myapp.mycompany.com/mysubapp.

Я пытался настроить заголовки хоста для указания, но c:\inetpub\wwwroot\myapp\mysubapp без использования перенаправления, но когда мы делаем это, мы получаем сообщение о том, что определенные DLL-файлы не могут быть найдены, это те, которые не найдены DLL-файлы. в c:\inetpub\wwwroot\myapp\bin. Эта ошибка имеет смысл, поскольку приложение не может найти библиотеки DLL вне каталога своего приложения.

Есть ли способ настроить IIS, чтобы заставить это работать?

Ответы [ 6 ]

4 голосов
/ 18 марта 2009

Если я правильно понимаю ваш вопрос, единственная рабочая настройка, которую я могу себе представить, - это использовать упомянутый вами подход (указывать заголовки хоста, но c:\inetpub\wwwroot\myapp\mysubapp без использования перенаправления) и включать библиотеки DLL основного приложения в корзину вашей подпапки. каталог.

2 голосов
/ 18 марта 2009

Вам нужно использовать переписывание URL.

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

1 голос
/ 18 марта 2009

Хотя в ответе не учитываются заголовки хоста, предлагаемый обходной путь в эта ссылка может быть полезной.

0 голосов
/ 18 марта 2009

Если вы хотите обслуживать / mysubapp под другим доменным именем, я не вижу смысла хранить его под myapp.

Настройте приложения как отдельные веб-приложения и скопируйте dll из myapp в mysubapp. Так как это Asp.Net, вы можете даже использовать магию привязки сборки через файл web.config.

0 голосов
/ 18 марта 2009

Как сказал DreamSonic, используйте разные веб-сайты для каждого приложения с разными IP-адресами для каждого приложения. Чтобы добавить более одного IP-адреса на сервер, используйте расширенную кнопку в диалоговом окне «Протокол Интернета (tcp / Ip)» в «Свойствах сети». В IIS установите веб-сайт для ответа на указанный IP-адрес вместо значения по умолчанию [Все неназначенные]. Вам не нужны две (или более) сетевые карты.

Кроме того, вам нужно будет переписать URL-адрес, что может быть проблемой, поскольку все ссылки в вашем приложении должны быть «исправлены», иначе вы в конечном итоге получите нежелательный URL-адрес браузер клиента.

0 голосов
/ 18 марта 2009

Решение, не связанное с переписыванием URL, будет следующим:

  1. Назначьте myapp.mycompany.com и mysubapp.mycompany.com разные IP-адреса в DNS, но они должны сопоставляться с одним и тем же хостом (Роберт объясняет ниже, как или использовать 2 сетевых адаптера).
  2. Создание 2 веб-сайтов (не виртуальных каталогов) в IIS.
  3. Сопоставьте первый с IP-адресом myapp.mycompany.com и укажите c: \ inetpub \ wwwroot \ myapp
  4. Сопоставьте второй с IP-адресом mysubapp.mycompany.com и укажите c: \ inetpub \ wwwroot \ myapp \ mysubapp
  5. ???
  6. Прибыль:)
...