14

当我尝试发出搜索词以.(句点)结尾的请求时,我收到了来自 .Net MVC 的 404 响应。这是我正在使用的路线:

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

搜索.在搜索词内部可以正常工作,只是不能以它结束。关于如何路由此搜索请求的任何想法?

4

2 回答 2

24

我已经解决了一个类似的问题(我在 /music/REM 之类的路径上遇到了问题)我在 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)不起作用。

于 2011-09-29T14:22:40.230 回答
5

如果您使用的是 .NET 4.0,则可以在 web.config 的 system.web 部分设置此标志,并且允许:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

我已经对其进行了测试,并且可以正常工作。哈克对此进行了解释。

于 2010-08-22T17:34:55.100 回答