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

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.

P.S. Вы также можете воспроизвести одно и то же поведение в StackOverflow, добавив точки в строку вопроса в URL в разных местах.

EDIT: Извините, это похоже на дубликат "Ресурс не найден." когда существует "точка" , в конце URL. Я не мог найти его раньше.

Ответ 1

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

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Я тестировал его, и он работает. Haack имеет объяснение.