Маршрутизация ASP.NET в WebForms не обрабатывает расширения, не относящиеся к ASP, при работе в ASP.NET Development Server.
Я создал веб-сайт по умолчанию в Visual Studio 2010. Добавил простую маршрутизацию туда в Global.asax:
routes.MapPageRoute("AboutRoute", "about", "~/About.aspx");
Это показывает 404, когда я запускаю ASP.NET Development Server и просматриваю "http://localhost:6521/WebSite1/about"
Но работает хорошо, когда я меняюсь about
в about.axd
(обратите внимание на расширение.axd) и перейдите к /WebSite1/about.axd
Что мне нужно изменить в файле web.config, чтобы сервер разработки работал так же, как IIS (правильно обрабатывает URL-адреса без расширений)?
1 ответ
Это показывает 404, когда я запускаю ASP.NET Development Server и просматриваю "http://localhost:6521/WebSite1/about"
Я подготовил образец веб-приложения, который дал мне страницы "О нас" и "Default.aspx". На странице default.aspx я написал следующий код....
Код Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect(Page.GetRouteUrl("AboutRoute",
new { ID = "Evgenyt" }));
}
Global.asax.cs Code
public class Global : System.Web.HttpApplication
{
private void RegisterRoute(RouteCollection Routes)
{
Routes.MapPageRoute("AboutRoute", "about/{ID}", "~/About.aspx");
}
void Application_Start(object sender, EventArgs e)
{
RegisterRoute(RouteTable.Routes);
// Code that runs on application startup
}
}
Затем я опубликовал код и настроил его на IIS. Теперь, когда запрос достигает IIS, он направил сообщение расширению ISAPI aspnet_isapi.dll. Затем расширение ISAPI загрузило страницу default.aspx, выполнило ее и вернуло ее визуализированный HTML-код в IIS, и, наконец, IIS затем отправило его обратно клиенту.
Результирующий URL
HTTP: // локальный / Demo / об / Evgenyt
Фактический URL
http://localhost/Demo/AboutUs.aspx
Что мне нужно изменить в файле web.config, чтобы сервер разработки работал так же, как IIS (правильно обрабатывает URL-адреса без расширений)?
Ссылка - в отличие от URLMapping
, URLRouting не происходит в Web.config. Это может быть реализовано с использованием кода. Вы можете использовать Application_Start Event, как указано в вашем коде в файле Glogal.asax.cs, чтобы зарегистрировать все маршруты для вашего приложения. Для регистрации маршрута вы можете использовать RouteTable
класс в System.Web.Routing
Пространство имен.