Как заставить ASP.NET MVC соответствовать символу точки (".") В конце маршрута? - PullRequest
12 голосов
/ 22 августа 2010

ASP.NET MVC обрабатывает символ точки как литерал для маршрутов в течение длительного времени .Однако это не соответствует маршруту, если точка находится в конце данной части маршрута.

Учитывая маршрут {controller}/{action}/{id} MVC соответствует этим:

http://test/somecontroller/someaction/some.id
http://test/somecontroller/someaction/....some.id

Но не этим:

http://test/somecontroller/someaction/someid.
http://test/somecontroller/someaction/someid...

Мое требование - иметь произвольное количество точек в любом местераздел id.Есть ли способ обойти это или это известная ситуация, которую мы должны избегать?Мне кажется, ошибка MVC 2.

PS Вы также можете воспроизвести такое же поведение в StackOverflow, добавив точки в строку вопроса в URL-адресе в разных местах.быть дубликатом "Ресурс не найден."ошибка, когда в конце URL есть «точка» .Я не мог найти это сам раньше.

1 Ответ

12 голосов
/ 22 августа 2010

Если вы используете .NET 4.0, вы можете установить этот флаг в разделе system.web вашего web.config, и он будет разрешен:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Я протестировал его, и он работает, Хаак имеет объяснение этого.

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