c# - 使用 HTTP 部分内容播放 html 5 视频时,Chrome 会锁定 HTTP 端口
问题描述
我正在使用 aspx 网页开发一个复杂的 asp.net 应用程序。在其中一个页面中,我需要在弹出页面中显示 15 分钟的视频文件。
我正在使用 HTTP 206 部分内容方法并使用 HttpResponse 的 OutputStream 流式传输大型 mp4 文件。视频播放良好。我有不同的服务在后台运行,它们也使用 HTTP 端口。这些服务必须更新并因此发送 Get 消息。我们还维护会话和心跳服务不断检查应用程序状态并在一段时间未收到响应后强制登录。视频开始播放后,HTTP 端口似乎被锁定,因此上述所有通信似乎都被阻塞了。这会导致应用程序挂起。
这是常见的行为吗?在播放视频时我需要做什么来维护其他服务?
提前致谢。
解决方案
鉴于您使用EnableSessionState="false"
了大写E
字母,听起来您试图从代码隐藏页面更改该设置。会话状态已经在读写状态下创建(默认情况下)并且为当前请求设置了锁,因此从那里更改设置为时已晚。
关闭当前 IIs 应用程序的会话状态,可以通过将enableSessionState设置添加到 web.config 文件来实现:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<pages enableSessionState="false" />
</system.web>
</configuration>
或者,对于不需要会话状态的特定页面,您可以将@ENABLESESSIONSTATE处理指令添加到它们的第一行:
<%@ ENABLESESSIONSTATE=False %>
如果这是一个 ASP.NET MVC 应用程序,您还可以使用会话状态属性装饰特定的控制器类以应用特定的会话状态行为:
using System.Web.Mvc;
namespace Foo.Bar.Baz
{
[SessionState(SessionStateBehavior.ReadOnly)]
public class HomeController : Controller
{
//...
}
}
您可能需要对多个页面执行此操作 - 不仅是其中包含 MP4 视频流的弹出窗口,还包括调用它的页面。
如果这解决了您的问题,请不要忘记将其标记为答案。
推荐阅读
- docker - 使用 mssql-tools 登录 Docker 失败
- youtube-api - 指定收件人 Youtube api v3 插入评论
- image - Graphviz 不渲染节点图像
- shell - 使用 shell 脚本替换 JSON 文件中 char 的第一个实例
- oracle - Oracle:调用中的参数数量或类型错误
- php - 如何在网站前端按 SKU 搜索产品
- javascript - 如何用 jest 模拟和测试链式函数?
- bash - 为什么 bash 不在 $() 运算符中拆分字段?
- node.js - 是否可以从 PM2 获取流程元数据?
- c++ - 为什么在此代码中隐式转换为常量迭代器会失败?