Почему завершающий% 20 (допустимые данные в этом случае) убивает asp.net mvc маршрутизацию - PullRequest
17 голосов
/ 08 июля 2010

Выполните следующее действие контроллера

    public ActionResult NextBySURNAME(int id, string data)
    {
        //code to process the data and edit the id accoringly not written yet
        return RedirectToAction("Edit", new { id = id });
    }

, если я вызову его с / Mycontroller / NextBySURNAME / 12 / Smith% 20Simon

, тогда оно будет работать нормально (в данном случае редактирование записи 12)но

/ Mycontroller / NextBySURNAME / 12 / Smith% 20

дает мне 404

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}/{data}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional, data=UrlParameter.Optional } // Parameter defaults
        );

Ответы [ 2 ]

8 голосов
/ 08 июля 2010

Итак, я выполнил некоторую отладку маршрутов и обнаружил, что маршруты, заканчивающиеся пробелами, даже не оценивались моим приложением MVC. Поэтому IIS должен плохо обрабатывать эти запросы.

Я добавил правило перезаписи в IIS 7.5, чтобы сопоставить завершающие пробелы и переписать их как тот же URL-адрес без пробела. Я не удовлетворен этим решением, но не смог найти объяснения того, почему IIS неправильно обрабатывает URL-адреса с конечными пробелами.

1 голос
/ 08 июля 2010

Я думаю, что способ обработки экранированных символов можно изменить в .NEt 4.0, но я сам не пробовал. Смотри http://msdn.microsoft.com/en-us/library/system.uri.aspx.

Эндрюс отвечает на косая черта в URL-адресе

Также Как создать экземпляр Uri, проанализированный с помощью GenericUriParserOptions.DontCompressPath

Это всего лишь дикие догадки, но, возможно, это поможет.

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