ASP.NET MVC и IIS 5 - PullRequest
       46

ASP.NET MVC и IIS 5

25 голосов
/ 12 сентября 2008

Каков наилучший способ получить хостинг приложения ASP.NET MVC для работы на IIS 5 (6 или 7). Когда я пытался опубликовать свое приложение ASP.NET MVC, все, что мне показалось, это 404 ошибки. Я немного погуглил и нашел пару решений, но ни одно из них не кажется супер элегантным, и я беспокоюсь, если они не будут использоваться, когда я приду к использованию среды общего хостинга для приложения.

Раствор 1

  1. Щелкните правой кнопкой мыши виртуальный каталог вашего приложения на inetmgr.exe.
  2. Свойства-> Вкладка Виртуальный каталог-> Конфигурация.
  3. Добавить новое расширение сопоставления. Расширение должно быть. *, Которое будет сопоставлены с исполняемым файлом C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll, или подходящее место на вашем компьютер (вы можете просто скопировать это из сопоставления для файлов .aspx). На Снимите флажок "проверить этот файл существует».
  4. 3 X Хорошо, и все готово.
  5. Если хотите, вы можете применить этот параметр ко всем вашим веб-сайтам. В Шаг1, нажмите на «Веб-сайт по умолчанию» узел вместо вашего собственного виртуального каталог, и на шаге 2 перейдите к Вкладка «Домашний каталог». Остальное то же самое.

Кажется немного хакерским все маршрутизировать через ASP.NET.

Решения 2

Измените маршрутизацию MVC, указав в URL-адресе .mvc, а затем выполните действия, описанные в решении 1 на основе этого расширения. Редактировать: исходная ссылка на изображение была утеряна, но здесь она из кеша Google:

alt text

Ответы [ 5 ]

13 голосов
/ 12 сентября 2008

Ответ здесь

Если расширение * .mvc не зарегистрировано на хостинг, это даст 404 исключение. Рабочий способ хостинга Приложения MVC в этом случае, чтобы изменить Вызов маршрутизации global.asax в следующим образом.

routes.Add (новый Маршрут ( "{контроллер} .mvc.aspx / {действие}", новый MvcRouteHandler ()) { Defaults = new RouteValueDictionary (new {контроллер = "YourController"})});

Таким образом, весь ваш контроллер запрос закончится в * .mvc.aspx, который распознается вашим хостингом. И как MVC DLL копируются в ваш местный мусорное ведро, никаких особых поселений нужно сделать для этого.

8 голосов
/ 12 сентября 2008

Я думаю в любом случае вам придется сделать Решение 1 .

Рассмотрим конвейер HTTP-запроса.

  1. Запрос поступает в IIS.
  2. IIS проверяет порт / заголовок узла, чтобы определить, настроен ли веб-сайт для сбора запросов на этот заголовок / порт узла.
  3. IIS исследует расширение файла запроса (.php, .asp, .aspx) и передает его ISAPI, который может обработать запрос такого типа.

Только в этот момент включается ASP.NET (или среда выполнения PHP). Если IIS не имеет такого сопоставления, он никогда не будет передавать запрос среде выполнения ASP.NET и запрос никогда не достигнет вашего кода. Вот почему вам нужно это отображение glob (*) для ISAPI ASP.NET.

ASP.NET MVC рамки URL часто заканчиваются без расширения файла вообще. Если вы хотите, чтобы эти запросы обрабатывались ASP.NET (или какой-либо другой средой выполнения), вы должны сопоставить все запросы независимо от расширения файла для этого ISAPI (то есть aspnet_isapi.dll).

Это часто также делается для HttpHandlers, которые должны обслуживать такие носители, как .jpg, .gif. Чтобы обработчик был поражен, он должен быть сопоставлен с вашим кодом, даже если .jpg не является «нормальным» расширением файла ASP.NET.

НТН,
Тайлер

3 голосов
/ 08 ноября 2012

Пробег: C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll -i

Это сбросит настройки реестра IIS для пользователя aspnet.

Создайте виртуальный каталог: 1. Щелкните правой кнопкой мыши каталог, который вы хотите конвертировать

  • выберите Свойства
    1. в каталоге, выберите Создать.
    2. в разделе «Конфигурация» выберите «Добавить».
    3. для исполняемой вставки:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll

для удлинителя:. *

  • снимите флажок «Проверить, существует ли файл»

  • в разделе Документы добавить файл точки входа, т.е.

  • в настройках каталога

    1. выберите Редактировать ...
    2. выберите Анонимный доступ
    3. снимите флажок Разрешить IIS контролировать пароль
    4. снимите флажок Обычная аутентификация
    5. снять флажок Встроенная проверка подлинности Windows
    6. в ASP.NET, убедитесь, что версия = v4.0.30319

ЗАМЕТЬТЕ имя пользователя, то есть: IUSR_AVSJ82S

Установить разрешение на совместное использование физического каталога:

  • В проводнике Windows перейдите в физический каталог, который был преобразован в виртуальный каталог. Щелкните правой кнопкой мыши имя каталога
  • выбрать свойства
  • на вкладке безопасности выберите Добавить
  • введите имя пользователя IIS, т. Е. IUSR_AVSJ82S, нажмите кнопку проверки имени.
  • нажмите ОК
  • установить права на чтение и запись.
1 голос
/ 15 мая 2009

К вашему сведению: на сервере 2003 (при разработке приложения, которое должно было подключаться к RPS) оно не позволило мне добавить расширение. * Я использовал альтернативное решение, изменяющее предложение маршрута, и это работал.

1 голос
/ 12 сентября 2008

Вы пытались добавить .aspx в конец имени контроллера?

Это сработало для вопроса переполнения стека Где взять хостинг ASP.NET MVC? .

...