Развертывание приложения ASP.NET 4 Web Forms с использованием маршрутизации на IIS 6 - PullRequest
2 голосов
/ 02 июня 2010

Для пояснения, сценарии, которые я рассматриваю, включают развертывание приложения ASP.NET 4 Web Forms, в котором используется RouteTable.Routes.MapPageRoute :

public class Global : System.Web.HttpApplication
{
  public static void RegisterRoutes(RouteCollection routes)
  {
    RouteTable.Routes.MapPageRoute("questionnaires", "questionnaires", "~/Pages/Questionnaires/List.aspx", false);
    RouteTable.Routes.MapPageRoute("questionnaires_submit", "questionnaires/submit", "~/Pages/Questionnaires/Insert.aspx", false);   
  }

  void Application_Start(object sender, EventArgs e)
  {
    RegisterRoutes(RouteTable.Routes);
  }
}

Сценарий 1: Приложение НЕ размещается в виде виртуального каталога на существующем веб-сайте, но является автономным веб-сайтом (это его собственная отправная точка). Он имеет свой собственный пул приложений. При развертывании работал без каких-либо ошибок.

Сценарий 2: Приложение размещается в виде виртуального каталога под существующим веб-сайтом. Он также имеет свой собственный пул приложений. Однако Я получил 404 ошибки при попытке доступа к намеченным маршрутам. К счастью, у меня был опыт работы с MVC в 3.5 sp 1, поэтому я попробовал этот метод: открыл диалоговое окно свойств виртуального директора, перешел на вкладку «Каталог», нажмите кнопку «Конфигурация» и добавил карту приложения Wildcard в aspnet_isapi.dll и снимите флажок «Убедитесь, что файл существует». Это заставило его работать.

Мой вопрос: почему я должен был добавить карту приложения с подстановочными знаками во втором сценарии, а не в первом? Если это помогает, корневой сайт, на котором размещен виртуальный каталог во втором сценарии, настроен с ASP.NET версии 2.0.50727.

1 Ответ

3 голосов
/ 02 июня 2010

ASP.NET 4.0 включает маршрутизацию URL без расширений В ASP.NET v4.0 есть лучший способ включить маршрутизацию. Обычно вы заинтересованы только в маршрутизации URL-адресов без расширений и не нуждаетесь в маршрутизации статических запросов (HTML, JPG, GIF, CSS, JS и т. Д.). В версии 4.0 появилась новая функция, позволяющая направлять URL-адреса без расширений в управляемый код без влияния на статические запросы (HTML, JPG, GIF, CSS, JS и т. Д.). Благодаря этой функции в IIS 6 больше не требуется сопоставление с подстановочными знаками

Подробнее см. Здесь:

* MSDN 1006 *

По сути, DLL-библиотека маршрутизации .NET 4.0 умнее, чем версия 3.5. В результате меньше обходных путей. В вашем случае, возможно, у вас есть автономный сайт, работающий в полной версии .NET 4.0, тогда как в вашем виртуальном каталоге корень работает в режиме 2.0 / 3.0 / 3.5. Надеюсь, это поможет!

...