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 имеет объяснение.