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

无网络环境下Blazor Server应用加载缓慢问题排查求助

Blazor Server内网无互联网访问环境加载缓慢问题分析

问题背景

域内存在两类网络:一类可连接互联网,另一类仅能访问内网。我们将基于IIS部署的Blazor Server应用放在可联网网络的Web服务器上,可联网设备访问时响应迅速,但不可联网设备访问时加载速度大幅下降。将协议从HTTPS改为HTTP后速度略有提升,但效果不明显。经排查,数据加载仅需29毫秒,但整体网络请求耗时长达6.5秒。

已执行的排查操作

  • 将应用从HTTPS切换为HTTP,速度略有提升;
  • 使用Wireshark检查网络流量,确认连接无异常但延迟仍存在;
  • 将应用底层平台从.NET 6升级至.NET 7,无改善;
  • 将部署模式从框架依赖改为自包含部署,情况未变化;
  • 为不可联网网络开启互联网访问后,应用恢复快速响应。

后续更新(2023年1月26日)

进一步测试发现,放行两个IP地址后应用可恢复快速响应:

  • 142.250.179.131(Google旗下,与gstatic服务相关)
  • 23.2.226.23(Akamai Technologies旗下)

但我们的应用代码及NuGet包均未直接引用这两家公司的相关资源,希望了解可能的原因。

可能的原因解析

1. Blazor Server框架的隐式CDN请求

Blazor Server默认会加载部分框架依赖的静态资源(如blazor.server.js、样式相关文件),微软部分资源会通过Akamai或Google gstatic的CDN节点分发。即使你未手动配置CDN引用,框架初始化阶段可能会尝试请求这些公共CDN地址,当内网无法访问时,会触发多次超时重试,直接拖慢整体加载速度。

2. .NET运行时的隐式网络调用

.NET运行时在某些场景下会发起外部请求:

  • 证书验证:HTTPS连接时,系统会尝试访问证书吊销列表(CRL)服务器验证证书有效性,这些服务器的流量可能通过Akamai节点转发;切换为HTTP后验证步骤减少,所以延迟略有降低,但如果存在其他隐式请求,问题依旧。
  • 版本检查:.NET运行时可能会定期检查更新,相关请求可能指向微软的服务,而这些服务可能依赖第三方CDN。

3. IIS或服务器安全组件的外部依赖

IIS的部分组件(如URL Rewrite、ARR)在特定配置下可能会访问外部资源;此外,服务器上的杀毒软件、防火墙在扫描网络请求时,可能会尝试连接外部服务进行内容验证,这些请求可能指向了上述IP地址。

4. 浏览器端的隐式资源请求

浏览器加载Blazor页面时,可能会解析页面中框架自动生成的隐含资源链接(比如用于性能优化的CDN资源),当浏览器无法访问这些地址时,会等待超时,导致用户感知到页面加载缓慢。

验证与解决建议

  • 检查应用的_Host.cshtml文件,确认是否存在指向公共CDN的资源引用,将其替换为本地资源路径;
  • 在不可联网设备上打开浏览器开发者工具(F12),查看网络请求面板,定位超时的请求目标,确认是否为上述两家公司的相关资源;
  • 修改.NET运行时配置,关闭自动更新检查或证书CRL验证(可通过修改应用的appsettings.json或服务器的machine.config实现);
  • 查看IIS日志及服务器系统日志,查找外部连接失败的相关记录,定位具体的请求发起源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:35:21