Маршрутизация 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 Пространство имен.

Другие вопросы по тегам