2008-12-02 6 views
11

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

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

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

+0

Аналогичная проблема здесь: http://stackoverflow.com/questions/294495/semantic-urls-with-dots-in-net#328873 – 2008-12-02 01:29:10

ответ

5

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

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

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

+0

Отлично работает, +1! – Justin 2011-05-26 21:37:18

+1

Как упоминалось Косау, он работает только в том случае, если период (.) Находится где-то в средней паре косых черт (например,/abc/de/f) и не работает, когда период выглядит как разделитель типа файла (например,/abc/де/фг). – 2016-01-11 16:22:32

22

я решил подобную проблему (у меня были проблемы с путями, как/музыка/REM) я добавил следующую строку в раздел system.webServer/обработчики (скорректированная для Вашего случая):

<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/fg).