Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net MVC4中.js URL的路由_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc Routing - Fatal编程技术网

ASP.Net MVC4中.js URL的路由

ASP.Net MVC4中.js URL的路由,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,在我的路由注册的底部,如果一个URL有一个.js扩展名,我想用一个特定的控制器来处理它(大多数.js内容是静态提供的,但有些是特殊的,需要通过控制器提供)。但是,正在跳过下面的路由,而catch-all路由正在处理该请求 routes.MapRoute("ContentScript", "{script}.js", new { controller = "Content", action = "Script" }, new[] { "NameSpace.Controllers" }

在我的路由注册的底部,如果一个URL有一个
.js
扩展名,我想用一个特定的控制器来处理它(大多数.js内容是静态提供的,但有些是特殊的,需要通过控制器提供)。但是,正在跳过下面的路由,而catch-all路由正在处理该请求

routes.MapRoute("ContentScript", "{script}.js",
   new { controller = "Content", action = "Script" },
   new[] { "NameSpace.Controllers" }
);
routes.IgnoreRoute("{*path}",
   new { path = new RegexConstraint(@"[^?]*\.(gif|jpe?g|png|ico|js|swf|css|txt|html?|xml|pdf)") }
);
正确的方法是什么

在这之后的路由中,每个剩余的请求都是这样路由的(这可以工作并捕获.js文件),因此问题不在任何部分,而是在
url
参数中):

我还尝试了以下方法,但没有成功:

routes.MapRoute("ContentScript", "{*script}",
   new { controller = "Content", action = "Script" },
   new { script = new RegexConstraint("\\.js$") },
   new[] { "NameSpace.Controllers" }
);

您必须将处理程序添加到web.config,以便它能够处理它。。。 诸如此类的事情:

<system.webserver>
    <handlers>
    <add name="scripts" path="*.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
</system.webserver>


问题是我不知道的一个
IgnoreRoute
(RouteRegistry.cs文件有1469行长…我还没有完整地研究它)。js文件是在托管代码中处理的——在我的路由能够处理请求之前,它们就已经被删除了

routes.MapRoute("ContentScript", "{script}.js",
   new { controller = "Content", action = "Script" },
   new[] { "NameSpace.Controllers" }
);
routes.IgnoreRoute("{*path}",
   new { path = new RegexConstraint(@"[^?]*\.(gif|jpe?g|png|ico|js|swf|css|txt|html?|xml|pdf)") }
);

下一个路由处理.js文件,因此此答案不正确。