如果其中一个参数包含句点,则ASP.NET MVC Route不匹配

时间:2014-08-07 18:23:43

标签: c# asp.net asp.net-mvc asp.net-mvc-routing

所以我有这条路线

        routes.MapRoute(
            name: "GetLinkJSON",
            url: "getlinkjson/{property}/{version}/{friendlyFileName}",
            defaults: new {controller = "Home", action = "GetLinkJSON"}
        );

和这个控制器方法

        public ActionResult GetLinkJSON(string property, int version, string friendlyFileName, string message, string key)

这样的网址效果很好

/getlinkjson/elms/1/testdisc096img?message=foo&key=bar

但是这不匹配(当我将。添加回friendlyFileName参数时)

/getlinkjson/elms/1/testdisc096.img?message=foo&key=bar

我尝试将{friendlyFileName}更改为{* friendlyFileName}是一个全部捕获,但没有运气。

2 个答案:

答案 0 :(得分:0)

您可以在web.config中尝试此设置

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

如果即使这样也行不通,你可以使用ASP.NET Route Debugger进行调试,看看发生了什么,这里有用的链接。
http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx/

答案 1 :(得分:0)

这有点晚了,但是我在web.config中使用了它,它起作用了:

  <add name="ApiURIs-ISAPI-Integrated-4.0"
   path="/people/*"
   verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
   type="System.Web.Handlers.TransferRequestHandler"
   preCondition="integratedMode,runtimeVersionv4.0" />