Для пояснения, сценарии, которые я рассматриваю, включают развертывание приложения 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.