ASP.NET MVC + IHttpModule = не найдено - PullRequest
0 голосов
/ 09 апреля 2011

Ах, чтобы решить эту проблему, мой разум полностью занят. Когда я регистрирую свой httpmodule, я получаю ошибку not-found, иначе все работает как чудо.

Вот мой httpmodule

public class UrlNormalizerModule : HttpModuleBase {
    protected override void OnBeginRequest(HttpContextBase context) {
        var originUrl = HttpContext.Current.Request.Url.ToString();
        var normalizedUrl = originUrl.NormalizeUrl(false);
        if (string.Compare(originUrl, normalizedUrl) != 0) {
            var response = context.Response;

            response.StatusCode = (int) HttpStatusCode.MovedPermanently;
            response.Status = "301 Moved Permanently";
            response.RedirectLocation = normalizedUrl;
            response.SuppressContent = true;
            response.End();
        }
    }
}

А как модуль прописан в Web.config

<system.webServer>        
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="UrlNormalizerModule" />
        <add name="UrlNormalizerModule" type="MagicByte.Web.Modules.UrlNormalizerModule, MagicByte.Web" />
    </modules>
</system.webServer>

ОБНОВЛЕНИЕ {временно проблема решена}

Хм ... Я только что обработал все события HttpApplication, как показано ниже

context.AuthenticateRequest +=
            (sender, e) => OnAuthenticateRequest(new HttpContextWrapper(((HttpApplication) sender).Context));

Я не знаю почему, но вышеуказанная проблема решена, когда я обработал только несколько важных событий, таких как BeginRequest. Так в чем же проблема, потому что?

1 Ответ

0 голосов
/ 10 апреля 2011

Вы можете попробовать исключить URL, используемый для доступа к этому модулю из механизма маршрутизации:

routes.IgnoreRoute("UrlNormalizerModule.ashx");
...