提供视频文件后,静态内容滞留在SendResponse中



我正在开发一个ASP.Net MVC应用程序,运行在.Net Framework 4.6.2上。该应用程序当前已部署到具有IIS 10的服务器上。

一切都很好,直到最近,我们还在网站上添加了一些视频(mp4(文件。现在,每当我们公司的工作人员浏览网站并打开视频,并在视频完全播放之前浏览到网站上的另一个页面时,该用户的浏览器将无法正确加载该网站。

如果视频完全流式传输到浏览器,那么之后一切都会正常工作。

视频带有HTML5视频标签,直接指向服务器上的物理文件,没有任何其他JavaScript库:

<video src="video.mp4" controls controlslist="nodownload" disablepictureinpicture oncontextmenu="return false;" />

请注意,如果我们直接浏览到视频(直接浏览src URL(,也会发生同样的行为。

在IIS中,我发现一旦视频开始流式传输到浏览器,如果在用户浏览之前视频没有完全流式传输,那么在随后的请求中,总会有一些静态内容文件停留在SendResponse状态。这会导致浏览器无法正常呈现页面,给人的印象是页面无法加载。

这些静态内容文件都具有ASP.NETMVC中的Bundling功能。请注意,并不是所有的束都能加载,只有一些束,这些束是束中较大的束,但不一定是最大的束。过一段时间后,浏览器最终将收到每个静态内容捆绑包的ERR_HTTP2_PROTOCOL_ERROR,在此情况下,IIS服务器上处于SendResponse状态的项目将消失。

奇怪的是,匿名模式和非匿名模式似乎并不相互影响:如果用户打开视频,无法再以匿名模式浏览网站上的任何页面,他们仍然可以在非匿名模式下浏览网站,直到他们以非匿名模式浏览到视频。

同样的行为也适用于我们公司测试过的所有电脑中的Chrome和MS Edge。

然而,同样的情况不会发生在我们的移动设备上,也不会发生在家里我们自己的设备上。

失败的请求跟踪显示没有错误。一切都返回代码200。对代码400及以上的跟踪进行过滤,没有任何结果。

我不知道该用什么其他方法继续进行故障排除。任何指针都将不胜感激。

经过一番调查和反复试验,最终发现罪魁祸首是防病毒软件。一张罚单被提交给了杀毒软件公司,他们承认这是他们的问题,并发布了一个修补程序。

应用修补程序解决了问题。

最新更新