ASP.NET MVC и IIS 5
-
09-06-2019 - |
Вопрос
Как лучше всего заставить хостинг приложения ASP.NET MVC работать на IIS 5 (6 или 7).Когда я попытался опубликовать свое приложение ASP.NET MVC, все, что я получил, — это ошибку 404.Я немного погуглил и нашел пару решений, но ни одно из них не кажется суперэлегантным, и я волнуюсь, станут ли они непригодными для использования, когда я начну использовать среду общего хостинга для приложения.
- Щелкните правой кнопкой мыши виртуальный каталог приложения на inetmgr.exe.
- Свойства->Вкладка «Виртуальный каталог»->Конфигурация.
- Добавьте новое расширение сопоставления.Расширение должно быть.*, Которое будет сопоставлено с исполняемой C: Windows Microsoft.net Framework v2.0.50727 .aspx файлы).На картировании снят «Проверьте, что файл существует».
- 3 X ОК, и все готово.
- Если хотите, вы можете применить этот параметр ко всем своим веб-сайтам.На шаге 1 нажмите на узел «Веб -сайт по умолчанию» вместо своего собственного виртуального каталога, а на шаге 2 перейдите на вкладку «Домашний каталог».Остальное такое же.
Кажется, немного сложно маршрутизировать все через ASP.NET.
Измените маршрутизацию MVC, чтобы URL-адрес содержал расширение .mvc, а затем выполните действия, описанные в решении 1, основанном на этом расширении. Редактировать:Ссылка на исходное изображение потерялась, но вот она из кэша Google:
Решение
Ответ: здесь
Если *.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-запросов.
- Запрос приходит в 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.
ХТХ,
Тайлер
Бегать:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -i
Это приведет к сбросу настроек реестра 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
ЗАПИСЬТЕ имя пользователя, т.е.:ИУСР_АВСДЖ82С
Установите разрешение общего доступа к физическому каталогу:
- В проводнике Windows перейдите в физический каталог, который был преобразован в виртуальный каталог.Щелкните правой кнопкой мыши имя каталога
- выбрать недвижимость
- на вкладке «Безопасность» выберите «Добавить».
- введите имя пользователя IIS, т.е.:IUSR_AVSJ82S щелкните «Проверить имя».
- нажмите ОК
- установите разрешения на чтение и запись.
К вашему сведению: на сервере 2003 (разработка приложения, которое должно было подключаться к RPS), оно не позволило мне добавить расширение.*, Я использовал альтернативное решение, изменяющее пункт о маршруте, и это сработало.
Пробовали ли вы добавить .aspx в конец имени контроллера?
Это сработало для вопроса о переполнении стека Где я могу получить хостинг ASP.NET MVC?.