微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 用于Javascript文件的MVC Route to Action

我正在尝试添加一个mvc路由来从控制器生成一个 javascript.我添加了以下路由,但它不起作用:
routes.MapRouteWithName(
           "DataSourceJS",// Route name
           "Scripts/Entities/{controller}/datasource.js",// URL with parameters
           new { controller = "Home",action = "DataSourceJS"} // Parameter defaults,null
           );

但是,如果我将路由更改为没有“.js”,并导航到“Scripts / Entities / {controller} / datasource”,它就可以工作.但是我需要在那里有.js文件扩展名,我该如何使用呢?

解决方法

how do I make this work?

IIS拦截请求,因为它包含文件扩展名并且劫持它认为它是静态文件而不将其传递给您的应用程序.

为了使它工作,你应该告诉IIS不要这样做.在< system.webServer>内您可以添加以下处理程序以指示具有指定模式的请求应由托管管道处理:

<system.webServer>
    <handlers>
        ...
        <add name="ScriptsHandler" path="Scripts/Entities/*/datasource.js" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

有些人也可能会告诉你使用:

<modules runAllManagedModulesForAllRequests="true" />

但我不建议您这样做,因为这意味着所有对静态资源的请求现在都将流经托管管道,这可能会对您的应用程序产生负面的性能开销.处理程序语法允许您仅针对某些路由模式和HTTP谓词选择性地启用此功能.

原文地址:https://www.jb51.cc/aspnet/249170.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐