ASP.NET MVC: как искать маршрут с помощью. (Период) в конце

Я получаю 404 ответ от .Net MVC, когда я пытаюсь сделать запрос, когда мой срок поиска заканчивается . (period). Это маршрут, который я использую:

routes.MapRoute(
                "Json",
                "Remote.mvc/{action}/{searchTerm}/{count}",
                new { controller="Remote", count=10}
            );

Поиск работает отлично с . внутри поискового запроса, он просто не может закончить его. Любые мысли о том, как перенаправить этот запрос на поиск?

Ответ 1

Я решил аналогичную проблему (у меня были проблемы с такими путями, как /music/R.E.M.) Я добавил следующую строку в раздел system.webServer/handlers (скорректированный для вашего случая):

 <add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="Remote.mvc/*" verb="GET"/>

Я также отметил, что

<httpRuntime relaxedUrlToFileSystemMapping="true" />

работает, только если период (.) находится где-то в средней паре косых черт (например,/abc/de/f) и не работает, когда период выглядит как разделитель типа файла (например,/abc/de/fg).

Ответ 2

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

<httpRuntime relaxedUrlToFileSystemMapping="true" />

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