Подтвердить что ты не робот

ASP.NET MVC и IIS 5

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

Решение 1

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

Кажется, что довольно сложно взломать все через ASP.NET.

Решения 2

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

alt text

4b9b3361

Ответ 1

Ответ здесь

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

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

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

Ответ 2

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

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

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

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

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

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

НТН,
Тайлер

Ответ 3

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

Это будет reset параметры реестра IIS для пользователя aspnet.

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

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

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

для вставки расширения:. *

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

  • в разделе Документы добавить файл точки входа, то есть: Default.htm, index.htm, Global.asax

  • в разделе "Настройки каталога"

    • выберите Изменить...
    • выберите Анонимный доступ
    • снимите флажок Разрешить IIS управлять паролем
    • снимите флажок Обычная проверка подлинности
    • снимите флажок Интегрированная проверка подлинности Windows
    • в ASP.NET, убедитесь, что версия = v4.0.30319

ВЗЯТЬ ПРИМЕЧАНИЕ имени пользователя, т.е.: IUSR_AVSJ82S

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

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

Ответ 5

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