Маршрутизация ASP.NET в WebForms не обрабатывает расширения, не относящиеся к ASP, при работе в ASP.NET Development Server. - PullRequest
1 голос
/ 01 марта 2012

Я создал веб-сайт по умолчанию в Visual Studio 2010. Добавил простую маршрутизацию туда в Global.asax:

routes.MapPageRoute("AboutRoute", "about", "~/About.aspx");

Это показывает 404, когда я запускаю Сервер разработки ASP.NET и перехожу к "http://localhost:6521/WebSite1/about"

Но хорошо работает, когда я изменяю about на about.axd (обратите внимание на расширение .axd) и перехожу к /WebSite1/about.axd

Что мне нужно изменить в web.config, чтобы сервер разработки работал так же, как IIS (правильно обрабатывает URL-адреса без расширений)?

1 Ответ

0 голосов
/ 01 марта 2012

Это показывает 404, когда я запускаю ASP.NET Development Server и перехожу на "http://localhost:6521/WebSite1/about"

. Я подготовил образец веб-приложения, который дал мне страницы" О нас "и" Default.aspx ". По умолчанию. ASPX странице, я написал следующий код ....

Default.aspx.cs код

protected void Page_Load(object sender, EventArgs e)
{
    Response.Redirect(Page.GetRouteUrl("AboutRoute", 
                        new { ID = "Evgenyt" }));
}

Global.asax.cs код

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://localhost/Demo/about/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 пространстве имен.

...