You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server App使用WebRTC推流时在Edge浏览器出现404错误求助

问题分析与解决办法

可能原因

  • Edge浏览器对WebRTC权限或缓存的处理逻辑与Chrome/Firefox存在差异,旧缓存或权限异常导致SignalR连接中断
  • IIS的URL重写规则拦截了Blazor Server的SignalR核心端点/_blazor,在Edge下返回404
  • Edge的隐私安全设置(如Tracking Prevention、增强安全模式)阻断了SignalR长连接,而WebRTC推流为P2P模式不受影响,因此后台仍在运行
  • Blazor Server的Circuit配置超时,推流时的资源占用触发Circuit断开,Edge的重连机制未正确处理导致404

解决步骤

1. 修复Edge浏览器层面问题

  • 清除站点缓存与数据:打开Edge设置 → 隐私、搜索和服务 → 清除浏览数据,勾选「缓存的图像和文件」「Cookie和其他站点数据」,选择目标站点后清除
  • 重新授权屏幕共享权限:点击地址栏左侧锁图标,检查「屏幕共享」权限是否为「允许」,若异常则重新授权
  • 调整安全设置:
    • 降低Tracking Prevention级别至「基本」(设置 → 隐私、搜索和服务 → Tracking Prevention)
    • 关闭「增强安全模式」(设置 → 隐私、搜索和服务 → 增强安全模式)

2. 检查IIS配置

  • 启用WebSocket协议:打开服务器管理器 → Web服务器 → 添加角色和功能,确保「WebSocket协议」已安装(Blazor Server依赖WebSocket维持长连接)
  • 排除SignalR端点的URL重写规则:在站点的web.config中添加以下规则,避免/_blazor被拦截:
<rewrite>
  <rules>
    <rule name="Allow Blazor SignalR" stopProcessing="true">
      <match url="^_blazor" />
      <action type="None" />
    </rule>
  </rules>
</rewrite>

3. 优化Blazor Server配置

  • 调整Circuit超时参数:在Program.cs中修改Circuit配置,延长断开保留时间与JS互操作超时:
builder.Services.AddServerSideBlazor()
    .AddCircuitOptions(options =>
    {
        options.DisconnectedCircuitRetentionPeriod = TimeSpan.FromMinutes(5);
        options.JSInteropDefaultCallTimeout = TimeSpan.FromSeconds(30);
    });
  • 分离WebRTC与Blazor主线程:将WebRTC推流逻辑移至Web Worker中,避免占用Blazor Circuit线程导致连接中断

4. 调试定位细节

  • 打开Edge开发者工具(F12)→ 网络标签,筛选「WebSocket」和「XHR」,查看推流时/_blazor请求的具体状态与错误信息
  • 查看IIS日志:在%SystemDrive%\inetpub\logs\LogFiles目录下找到对应站点的日志,分析404请求的路径与触发原因

内容的提问来源于stack exchange,提问作者Sandwich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:09