经典ASP(或PHP等)中的ASP.NET MVC包
我们有混合应用程序,它仍然运行ASP.NET MVC中的经典ASP应用程序的一部分.我想在经典ASP中也使用捆绑的
javascript和样式.
在ASP.NET中,我们可以很好地使用捆绑的东西和缓存,我们使用Script.Render,它将版本哈希添加到fetch url. 事实上,这种方法当然不适用于Classic ASP. 我们可以直接从html< script src =“bundles / js?v =<%= version%>”/>使用捆绑. version变量是缓存清除中使用的经典ASP变量(强制浏览器刷新).它在版本之间进行了更改. 问题是如果经典ASP没有给捆绑请求提供正确的哈希,MVC捆绑将返回头缓存:no-caching,这将指示浏览器不缓存它. 你有什么好主意吗?可以在经典ASP中计算哈希吗?你能告诉捆绑在没有v = hash的情况下允许缓存吗?可以在启动时从MVC传输v = hash吗?我们有在Classic ASP和MVC之间传输变量的机制,但是这种哈希是从MVC启动代码可以达到的. 解决方法
AardVark狂野的想法给了我一些想法,我自己想出来了.解决方案本身很简单.
以下是可能需要类似解决方案的任何人的解决方案. 在ASP.NET MVC(Global.asax.cs或BundleConfig)中注册捆绑包后: List<string> bundleHtml = new List<string>(); bundleHtml.Add(Scripts.Render("~/bundles/legacybase").ToString()); bundleHtml.Add(Styles.Render("~/styles/legacycss").ToString()); File.WriteAllLines(Server.MapPath("~/dyn_legacy_bundle.inc"),bundleHtml,System.Text.Encoding.UTF8); 这将生成文件dyn_legacy_bundle.inc,其中包含正确的< script> -tags,其中包含版本哈希(如果启用了调试,则为调试版本). 在经典ASP(或一些变态的PHP等): <head> <!--#include file="dyn_legacy_bundle.inc" --> </head> 然后,这将使用ASP.NET启动时生成的文件,并使用捆绑的css / javascript. 否定的是,如果在运行时更改了捆绑文件,则不会更新此动态文件.这将导致捆绑不被缓存.应用程序池回收最终将修复缓存,所以我认为我们将继续使用它.如果你想办法避免这种情况,请告诉我. 请注意,这也适用于任何其他框架(即PHP) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.NET MVC.如何创建接受和multipart / fo
- 在ASP.NET MVC中使用MySQL的AccountController
- asp.net – 对象“aspnet_CheckSchemaVersion”,数据库“XX
- 可以使用ASP.NET路由为.ashx(IHttpHander)处理程序创建“干
- asp.net – 如何在Visual Studio 2015中运行index.html文件
- asp.net – 如何以编程方式从LDAP检索信息
- asp.net-mvc – ASP.NET MVC中的Crystal Reports
- asp.net-mvc – 我可以传递一个匿名类型到我的ASP.NET MVC视
- asp.net – 在LINQ-to-SQL中运行映射存储过程方法时生成的奇
- asp.net-web-api – MVC Core ZipArchive无效
- ASP.NET MVC中的单元测试比Web窗体更好?
- asp.net – 使用外部connectionStrings.config文
- asp.net-mvc-3 – ASP.Net MVC3路由保留字?
- asp.net-mvc-2 – 实体框架4 CTP 4/CTP 5通用存储
- asp.net-mvc-3 – 基于字符串创建ViewBag属性
- 从VS发布到Azure时无法更改目标运行时
- 如何使文本框在asp.net中不可编辑(c#)
- WebApi ASP.NET身份Facebook登录
- asp.net – 可以使用URI模板来匹配URI到路由吗?
- asp.net-mvc – 在nopcommerce 2.8中使用Telerik