Маршрутизация на IIS6 с десятичной дробью в маршруте - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть маршрут в моем проекте MVC3, который прекрасно работает локально при запуске через отладчик и через IIS7. Однако наши серверы - IIS6, и когда я перемещаю свое приложение, я получаю сообщение об ошибке «Страница не найдена». Я думаю, это связано с десятичной дробью в маршруте.

Итак, я попытался реализовать RouteHandler, который, кажется, вызывается, но не работает правильно, потому что значение не перезаписывается в маршруте?

В любом случае, вот мой маршрут:

var route = context.MapRoute(
    "Management_version",
    "Management/Version/{versionNumber}/{action}",
    new { area = "Management", controller = "Version", action = "View" },
    new[] { "FRSDashboard.Web.Areas.Management.Controllers" }
);
route.RouteHandler = new HyphenatedRouteHandler();

и мой обработчик маршрута:

public class HyphenatedRouteHandler : MvcRouteHandler
{
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        var versionNumberContext = requestContext.RouteData.Values["versionNumber"];
        requestContext.RouteData.DataTokens["versionNumber"] = versionNumberContext.ToString().Replace(".", "-");

        return base.GetHttpHandler(requestContext);
    }
}

По сути, я пытаюсь заменить десятичную точку дефисом, чтобы обойти эту проблему. Любые предложения будут очень оценены.

1 Ответ

1 голос
/ 23 сентября 2011

Получается, что мне также нужно было установить карту приложения Wildcard для «aspnet_isapi.dll» в дополнение к шаблону расширения приложения. На обоих подстановочных знаках должна быть отключена опция «проверить, существует ли файл».

...