我已经阅读了这个问题的答案:ASP.NET Bundling - Bundle not updating after included file has changed (returns 304 not modified)
但是,没有一个答案能够解决或与我所看到的相匹配。
首先,我能够在Windows 10和Windows 2012服务器上重现我的问题。
我已经在发布模式下构建了我的项目,在web.config中更改了debug = false。
我已将我的项目更新为Microsoft.AspNet.Web.Optimization NuGet包,版本1.1.3
我的捆绑设置如下所示:
public static void RegisterBundles(BundleCollection bundles)
{
BundleTable.EnableOptimizations = true;
bundles.Add(new ScriptBundle("~/bundles/mybundle")
.Include("~/Views/User/UserSearch.js")
.Include("~/Views/User/UserEdit.js")
);
...
}
捆绑包中列出的文件(UserSearch.js,UserEdit.js)都没有.min目录中的.min版本。
我的User.cshtml文件的结尾如下所示:
@section Scripts {
@Scripts.Render("~/bundles/otherstuff")
@Scripts.Render("~/bundles/mybundle")
<script type="text/javascript" src="AnotherFile.js"></script>
}
所有这一切,当我查看页面时,我看到捆绑包的请求通过:
https://local/bundles/mybundle?v=wlen6W7mg528CIKzW0x3ewQacQ6mf8wyin1XGaXoonQ1
然后我通过在顶部添加alert('hi');
行来更改我的UserSearch.js文件。
此时,如果我刷新页面,我期待更改v = querystring参数,并显示警告框。但事实并非如此。
如果我回收网站或IIS,并再次访问该页面,我会收到警告框。
缓存破坏应该在不重新编译或回收的情况下即时运行吗?
是否有任何其他因素可能会干扰捆绑器无法识别文件更改或@ Scripts.Render()没有写出新令牌?