Перенаправить маршрут на global.asax.cs - PullRequest
2 голосов
/ 21 ноября 2011

Есть ли способ заставить всех, кто имеет доступ к localhost/subscribe, перенаправить на localhost/subscribe.aspx, используя правило внутри global.asax.cs, или я должен перенаправить из действия?

Ответы [ 3 ]

9 голосов
/ 21 ноября 2011

Следующий код должен работать для вас:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (Request.RawUrl.ToLower().EndsWith("subscribe")) 
    {
        Response.Redirect("subscribe.aspx");
    }
}

Или внутри Application_PreRequestHandlerExecute метод, если вы собираетесь использовать также Session для проверок

3 голосов
/ 21 ноября 2011

У Фила Хаака есть пример перенаправления с использованием маршрутов

Однако для одного URL наиболее простым решением, вероятно, является перенаправление с действия.

2 голосов
/ 21 октября 2014

Если вы перенаправляете виртуальный URL в физический файл, это довольно легко сделать в Global.asax:

protected void Application_Start(object sender, EventArgs e)
{
     RegisterRoutes(RouteTable.Routes);
     RouteTable.Routes.MapPageRoute("Key", "Home", "~/Public/Pages/Default.aspx");
}

В этом случае

http://www.example.com/Home

перенаправляет на

http://www.example.com/Public/Pages/Default.aspx

Просто для справки, это не перенаправляет на клиента, оно перенаправляетна сервере, что означает, что сервер не возвращает 302 с новым адресом, он просто отправляет обратно содержимое, на которое направляет его.

Это также удобно для добавления переменных, например:

routes.MapPageRoute("MainPublic3", "Public/Pages/{PAGE}/{CHILD}", "~/Public/Pages/Pages.aspx");

Затем к ним можно получить доступ в следующем коде:

string page = Page.RouteData.Values["PAGE"];
string child = Page.RouteData.Values["CHILD"];

Мы используем это для всего, где я работаю, конечно, мы переключаемся на MVC:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...