ASP.NET MVC:如何使用 . (期间)结束

Posted

技术标签:

【中文标题】ASP.NET MVC:如何使用 . (期间)结束【英文标题】:ASP.NET MVC: How to Route Search Term with . (Period) at the end 【发布时间】:2010-09-24 20:51:09 【问题描述】:

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

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

在搜索词中使用. 时搜索工作正常,只是不能以它结束。有关如何路由此搜索请求的任何想法?

【问题讨论】:

类似问题:***.com/questions/294495/… 【参考方案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,你可以在你的 web.config 的 system.web 部分设置这个标志并且它会被允许:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

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

【讨论】:

正如 Kosau 所提到的,它仅在句点 (.) 位于斜杠中间的某个位置时才有效(例如 /abc/de/f),并且当句点看起来像文件时不起作用类型分隔符(例如 /abc/de/fg)。

以上是关于ASP.NET MVC:如何使用 . (期间)结束的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 在 Azure Kudu 部署期间运行 Gruntfile.js 作为构建的一部分

在调试 ASP.NET MVC 应用程序期间未更新 CSS

ASP.NET MVC 控制器生命周期

ASP.NET MVC学习之Ajax(完结)

使用日期时间选择器进行日期和时间验证 (ASP.Net MVC Core v1.1)

ASP.NET MVC学习之视图篇