Как лучше всего получить хостинг приложения ASP.NET MVC для работы на IIS 5 (6 или 7). Когда я попытался опубликовать свое приложение ASP.NET MVC, все, что я получил, это 404 ошибки. Я немного погуглил и нашел пару решений, но ни одно из них не кажется супер элегантным, и я беспокоюсь, не станут ли они непригодными для использования, когда я перейду к использованию среды общего хостинга для приложения.
- Right-click your application virtual directory on inetmgr.exe.
- Properties->Virtual Directory Tab-> Configuration.
- Add a new mapping extension. The extension should be .*, which will be mapped to the Executable C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, or the appropriate location on your computer (you can simply copy this from the mapping for .aspx files). On the mapping uncheck "check that file exists".
- 3 X OK and you're good to go.
- If you want, you can apply this setting to all your web sites. In step1, click on the "Default Web Site" node instead of your own virtual directory, and in step 2 go to the "Home Directory" tab. The rest is the same.
Маршрутизация всего через ASP.NET кажется хакерским занятием.
Измените маршрутизацию MVC, чтобы она содержала .mvc в URL-адресе, а затем выполните шаги решения 1, основанные на этом расширении. Обновлено: исходная ссылка на изображение была потеряна, но вот она из кеша Google:






Вы пробовали добавить .aspx в конец имени контроллера?
Это сработало для вопроса о переполнении стека Где я могу получить хостинг ASP.NET MVC?.
Итак, это в основном решения 2, спасибо, что указали на другой вопрос.
Очень похоже, но если вы используете общий хостинг, вы не сможете добавить расширение сопоставления. Добавив aspx, вы станете золотым для любого сайта с версией 3.5.
Ответ: здесь
If *.mvc extension is not registered to the hosting , it will give 404 exception. The working way of hosting MVC apps in that case is to modify global.asax routing caluse in the following way.
routes.Add(new Route("{controller}.mvc.aspx/{action}", new MvcRouteHandler()) { Defaults = new RouteValueDictionary (new{ controller = "YourController"} ) });
In this way all your controller request will end up in *.mvc.aspx, which is recognized by your hosting. And as the MVC dlls are copied into your local bin , no special setttings need to be done for it.
Это происходит до или после routes.MapRoute("Default","{controller}/{action}/{id}",new { controller = "Home", action = "Index", id = "" }); //?
Что насчет движка Razor View. Работает ли это и с бритвенными видами.
Это также работает в IIS6 и IIS7? или есть конкретное решение для IIS5-MVC?
Думаю, в любом случае вам придется выполнить Решение 1.
Рассмотрим конвейер HTTP-запросов.
Только в этот момент вступает в действие ASP.NET (или среда выполнения PHP). Если IIS не имеет этого сопоставления, он никогда не передаст запрос среде выполнения ASP.NET, и запрос никогда не достигнет вашего кода. Вот почему вам нужно сопоставление glob (*) с ASP.NET ISAPI.
URL-адреса фреймворка ASP.NET MVC часто заканчиваются вообще без расширения файла. Если вы хотите, чтобы эти запросы обрабатывались ASP.NET (или какой-либо другой средой выполнения), вам необходимо сопоставить все запросы независимо от расширения файла с этим ISAPI (например, aspnet_isapi.dll).
Это часто также делается для HttpHandler, которым необходимо обслуживать такие носители, как .jpg, .gif. Чтобы обработчик был задействован, он должен быть сопоставлен с вашим кодом, даже если .jpg не является «нормальным» расширением файла ASP.NET.
HTH,
Тайлер
К вашему сведению: на сервере 2003 (разработка приложения, которое должно было подключаться к RPS), это не позволило мне добавить расширение. *, Я использовал альтернативное решение, изменяя предложение маршрута, и это работал.
Используйте Metabase Explorer, вы можете добавить расширение. * В IIS6. Установите набор инструментов IIS 6.0 отсюда microsoft.com/download/en/…. После установки откройте и перейдите в дереве на левой панели к LM> W3SVC> 1> ROOT> AppName. Затем отредактируйте расширение на. *
Пробег: 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
в настройках каталога
ЗАПОМНИТЕ имя пользователя, например: IUSR_AVSJ82S
Установите разрешение на совместное использование физического каталога:
первый шаг должен быть C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis -i
Решения 2 не компилируются,
System.Web.Routing.Routeне содержит конструктора, который принимает аргументы «0».