Вопрос

Как лучше всего заставить хостинг приложения 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 .aspx файлы).На картировании снят «Проверьте, что файл существует».
  4. 3 X ОК, и все готово.
  5. Если хотите, вы можете применить этот параметр ко всем своим веб-сайтам.На шаге 1 нажмите на узел «Веб -сайт по умолчанию» вместо своего собственного виртуального каталога, а на шаге 2 перейдите на вкладку «Домашний каталог».Остальное такое же.

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

Решения 2

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

alt text

Это было полезно?

Решение

Ответ: здесь

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

routes.add (новый route ("{controller} .mvc.aspx/{action}", new mvcroutehandler ()) {defaults = new Routevaluedictary (new {controller = "yourcontroller"})});

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

Другие советы

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

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

  1. Запрос приходит в IIS.
  2. IIS проверяет заголовок порта/хоста, чтобы узнать, настроен ли на нем веб-сайт для захвата запросов для этого заголовка/порта хоста.
  3. 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.

ХТХ,
Тайлер

Бегать: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

для вставки-удлинителя:.*

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

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

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

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

ЗАПИСЬТЕ имя пользователя, т.е.:ИУСР_АВСДЖ82С

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top