Tim*_*ter 14 asp.net-mvc asp.net-mvc-4 bundling-and-minification
我有一个ASP.NET MVC4应用程序(我认为)自从一年前首次发布以来一直在使用JavaScript和CSS捆绑.在此期间,我们发布了大量更新,并且没有看到脚本传送出现问题的证据.
但是,通过我们最新的代码部署,我注意到服务的JavaScript不是最新的,并且无论底层脚本内容发生什么变化,脚本包请求中使用的查询字符串参数都不会更改.
我尝试在Visual Studio中重建解决方案,并验证修改后的脚本文件是否正确部署到服务器.我还明确地回收了IIS应用程序池并重新启动了服务器,但问题仍然存在.
有任何想法如何诊断或解决这个问题?
更新:刚刚比较了暂存和生产服务器,我注意到了行为上的差异.使用Visual Studio Web部署以相同方式部署两个服务器.登台服务器通过更新它在引用脚本包的URL中使用的哈希值,正确并立即反映脚本文件的更改.相反,生产服务器无法更新其捆绑哈希以响应脚本文件修改和/或更改脚本包的组成(即使在重新启动IIS或回收应用程序池之后).这表明该问题与生产IIS环境隔离,并且与我的代码更改或Visual Studio配置无关.
Tim*_*ter 19
经过大量的搜索,我最终偶然发现了这个问题的原因.
服务器未能检测到新部署的JavaScript文件更改是由服务器上存在的这些JavaScript文件的一些类似命名的缩小版本引起的.我假设这种行为是设计的,即捆绑过程优先考虑现有的缩小文件并忽略等效的未缩小文件,即使它更新.
我无法确定这几个缩小的文件是如何在服务器上出现的,但我认为它们是涉及一些替代形式的缩小/捆绑的实验的结果.无论如何,只需删除它们就可以让捆绑机制看到我部署的脚本文件,一切都开始工作了.