Это невозможно для маршрутизации существующего URL с помощью маршрутизации Asp.net? - PullRequest
0 голосов
/ 17 июня 2009

Из моего последнего вопроса я обнаружил, что Asp.net Routing не может маршрутизировать с существующим URL для получения дополнительной информации Прочтите это .

Как перенаправить существующий URL на другой URL с помощью Asp.net Routing?

Подсказка!

Я думаю, это поведение, подобное запрету доступа, которое всегда перенаправляет на страницу входа по умолчанию.

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 июня 2009

Я нашел решение. Это очень легко с помощью HttpModule. Пожалуйста, посмотрите на мой следующий пример кода.

В глобальном web.config

<configuration>
    <system.web>
        <httpModules>
            <add name="RedirectModule" type="MySolution.RedirectModule, MySolution" />
        </httpModules>
    </system.web>
    <!-- The following code will be used by IIS 7+ -->
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="RedirectModule" />
            <add name="RedirectModule" type="MySolution.RedirectModule MySolution" />
        </modules>
    </system.webServer>
</configuration>

В MySolution / RedirectModule.cs

using System;
using System.Web;

namespace MySolution
{
    public class RedirectModule : IHttpModule
    {
        #region IHttpModule Members

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(HttpApplication_BeginRequest);
        }

        public void Dispose() {}

        #endregion

        void HttpApplication_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = sender as HttpApplication;

            if (*[logic for checking before redirect]*)
            {
                app.Response.Redirect(*[url]*);
            }
        }
    }
}

Для получения дополнительной информации, пожалуйста, посмотрите исходный код Url Mapping как UrlRewritingNet.UrlRewrite .

PS. IHttpModule - очень мощный интерфейс. Он может справиться с каждым типом запроса. Таким образом, это может помочь мне полностью решить этот вопрос.

0 голосов
/ 17 июня 2009

Вы должны убедиться, что -existing- url 'найден' / 'matched' в таблице маршрутов, а URL-адрес, на который вы перенаправляетесь, не .... (если вы не перенаправляетесь на действие / маршрут контроллера) )

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