Почему мой виртуальный каталог IIS работает с http://localhost, но не http://computername? - PullRequest
8 голосов
/ 22 мая 2009

Мне было поручено добавить функциональность на существующий веб-сайт IIS 6.0. Для этого я создал приложение ASP.NET MVC. Он отлично работает при развертывании как собственный сайт, но, похоже, не работает, когда я пытаюсь развернуть его как виртуальный каталог на том сайте, где он должен жить.

Имя сервера - CWEBSERVER, а IP - 192.168.1.11. Если посмотреть на IIS Manager, это структура сайта:

(Default Website) (root)
  - PRODUCTION (vDir)
  - CONTENT (not a vDir)
  - DATAFOLDER (vDir, contains MVC app, just added by me, not working)

Странно то, что когда я набираю следующие URL-адреса из браузера на сервере, это работает:

http://localhost/DATAFOLDER/account.aspx
http://127.0.0.1/DATAFOLDER/account.aspx
http://192.168.1.11/DATAFOLDER/account.aspx

Следующий URL (который мне нужен для работы) не работает:

http://CWEBSERVER/DATAFOLDER/account.aspx

Я получаю сообщение об ошибке: «Ресурс не найден».

Посмотрев ближе, я понял, что запросы к http://CWEBSERVER отправляются в vDir PRODUCTION, но вызовы http://localhost или http://192.168.1.11 отправляются в корневой каталог веб-сайта. Я предполагаю, что это что-то настроено оригинальным дизайнером сайта. Я не уверен, как изменить эту настройку, но я не думаю, что смогу изменить ее в любом случае, потому что на самом деле существует масса других каталогов, которые могут быть затронуты. Еще одна вещь, на которую я хотел обратить внимание: это папка CONTENT, доступная по http://CWEBSERVER/CONTENT. Это действительно странно, так как я думал, что http://CWEBSERVER указал мне на корень, так что я бы не стал Не думаю, что "/ CONTENT" действительно сможет попасть в папку CONTENT.

Теперь моя проблема заключается в следующем: как мне получить доступ к моему DATAFOLDER через http://CWEBSERVER/DATAFOLDER? Я бы подумал, что я должен просто поместить DATAFOLDER vDir в из PRODUCTION vDir. Я попробовал это, и используя localhost или IP это все еще доступно через:

http://localhost/PRODUCTION/DATAFOLDER/account.aspx
http://127.0.0.1/PRODUCTION/DATAFOLDER/account.aspx
http://192.168.1.11/PRODUCTION/DATAFOLDER/account.aspx

Когда я использую CWEBSERVER, он все равно не работает:

http://CWEBSERVER/DATAFOLDER/account.aspx

Ошибка по-прежнему «Ресурс не найден». Может кто-нибудь пролить некоторый свет на это? В частности, у меня есть следующие вопросы:

  1. Как http://localhost перейти в корень, а http://CWEBSERVER перейти в vDir PRODUCTION? Где я могу изменить этот параметр?
  2. Почему "http://localhost/PRODUCTION/DATAFOLDER/account.aspx" работает, но не работает" http://CWEBSERVER/DATAFOLDER/account.aspx"?

Принятый ответ на этот вопрос (кому будет присуждена награда) должен быть в состоянии сделать это, чтобы я мог получить доступ http://CWEBSERVER/DATAFOLDER/account.aspx. Спасибо!

Ответы [ 6 ]

11 голосов
/ 22 мая 2009

Скорее всего, IIS привязан только к IP-адресу. Зайдите в IIS Manager, затем зайдите в свойства на сайте. Затем на вкладке веб-сайта перейдите в свойства.

Добавить идентификатор для этого значения заголовка хоста.

При необходимости вы можете добавить несколько привязок.

обновление

Я думаю, я знаю, что вы хотите сейчас. В диспетчере IIS разверните свой веб-сайт по умолчанию. Затем щелкните правой кнопкой мыши на виртуальном каталоге Production и выберите «Создать виртуальный каталог». Назовите этот новый DATAFOLDER. Затем свяжите это с существующим местоположением в вашей файловой системе.

Я действительно думаю, что тебе нужно немного почистить это. Первое, что я хотел бы сделать, это решить, как на самом деле все должно быть доступно. Другими словами, когда они набирают http://www.mysite.org/ Что это должно быть? Если это каталог PRODUCTION, то создайте новый сайт и укажите его в каталоге PRODUCTION, затем создайте в нем свое виртуальное приложение DATAFOLDER.

5 голосов
/ 11 января 2012

Хотя я не прошел весь список ответов, я столкнулся с этим решением следующим образом. Ссылки на мою веб-страницу работают с localhost, но не с IP-адресом или именем компьютера. Это не имеет никакой ошибки, особенно с БОЛЬШИМ IE (****).

Чтобы исправить это, я добавил сайт в ДОВЕРЕННЫЕ САЙТЫ IE.

Может быть, это помогает уменьшить разочарование!

2 голосов
/ 23 сентября 2013

У меня была похожая проблема, которая была решена путем назначения статического IP-адреса моему временному серверу IIS. (Я назначил тот же IP-адрес, что и динамически назначенный, который был 192.168.56.101.)

Пусть это кому-нибудь поможет.

Также проверьте это для настроек брандмауэра.

1 голос
/ 29 января 2014

Для меня это была проблема с брандмауэром:

  1. Перейдите: Панель управления -> Брандмауэр Windows -> Разрешить программу или функцию через брандмауэр Windows

  2. Прокрутите список до конца и установите флажок для служб www (http).

  3. Сохранить

Теперь я могу получить доступ http://computername.domain имя

1 голос
/ 22 мая 2009

Сделайте, как сказал Крис Лайвли, и добавьте дополнительные привязки для других имен хостов или добавьте новый сайт с настройками для того же контента. IIS отвечает, просматривая информацию заголовка узла, и если у вас есть только веб-сайт по умолчанию с одной привязкой к порту 80, он не будет обрабатывать все возможные заголовки.

Если имя является внутренним для вашей компании, например, имя машины или внутренняя запись DNS, вам может не понравиться привязка по умолчанию. Если это не работает в тестировании, добавьте привязку для этой ситуации (CWEBSERVER или mysite.org). Протестируйте его с www и без www, если вам важно, чтобы он работал в обоих направлениях.

Нет большого недостатка в добавлении нескольких «сайтов» в IIS для одного и того же контента. Например, вы могли бы иметь

mysite.org указал на /PRODUCTION/DATAFOLDER/index.html

и

marketingsite.com указал на /PRODUCTION/DATAFOLDER/index.html

Тогда вы можете делать такие вещи, как иметь различные настройки SSL и так далее. На моем веб-сервере ничего не попадает на веб-сайт по умолчанию, если что-то идет не так (как, например, я установил новый внешний IP-адрес и еще не изменил привязки).

Выбери свой яд, но по сути тебе просто нужно добавить настройки в IIS, пока он не обработает все возможные адреса так, как ты хочешь.

0 голосов
/ 22 мая 2009

добавить '192.168.1.11 cwebserver' в% Windir% / system32 / drivers / etc / hosts

...