ASP.NET MVC: Как маршрутизировать термин поиска с. (Период) в конце - PullRequest
11 голосов
/ 02 декабря 2008

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

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

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

Ответы [ 2 ]

23 голосов
/ 29 сентября 2011

Я решил похожую проблему (у меня были проблемы с путями типа /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 ).

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

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

<httpRuntime relaxedUrlToFileSystemMapping="true" />

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

...