Blazor Server应用IIS部署:主机名访问WebSocket报1006错误IP访问正常
IIS部署Blazor Server主机名WebSocket错误解决指南
针对主机名访问时WebSocket连接失败、本地IP访问正常的问题,按以下步骤排查修复:
1. 确认IIS WebSocket协议已安装
- 打开「服务器管理器」→「添加角色和功能」→ 展开「Web服务器(IIS)」→「应用程序开发」,确保勾选WebSocket协议,未安装则完成安装并重启IIS。
2. 检查站点绑定配置
- 打开IIS管理器,找到你的Blazor站点,右键「编辑绑定」:
- 确认主机名绑定的域名/自定义名称正确,端口(80/443)无冲突;
- 如果使用HTTPS,证书需与主机名匹配且状态正常。
3. 修正Blazor Server中间件配置
确保Program.cs中WebSocket中间件在路由前启用,且Blazor Hub映射正确:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); var app = builder.Build(); // 必须在路由前启用WebSocket app.UseWebSockets(); app.UseRouting(); // 确保Blazor Hub路径默认正确 app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); app.Run();
4. 处理反向代理/ARR配置(如果使用)
若站点通过ARR或反向代理访问,需开启WebSocket传递:
- 打开IIS「应用程序请求路由」→「服务器代理设置」,勾选「启用代理」和「WebSocket支持」;
- 在站点
web.config中添加WebSocket代理规则:
<configuration> <system.webServer> <rewrite> <rules> <rule name="ProxyToBlazor" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://localhost:你的Blazor端口/{R:1}" /> </rule> </rules> <outboundRules> <rule name="WebSocketUpgrade" preCondition="IsWebSocket"> <match serverVariable="RESPONSE_Upgrade" pattern=".*" /> <action type="Rewrite" value="websocket" /> </rule> <preConditions> <preCondition name="IsWebSocket"> <add input="{HTTP_Upgrade}" pattern="websocket" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration>
5. 验证主机名解析
- 在客户端执行
ping 你的主机名,确认返回IP为服务器本地IP; - 内部测试环境需在客户端
hosts文件(C:\Windows\System32\drivers\etc\hosts)添加映射:
服务器IP 你的主机名
问题截图对比
主机名访问WebSocket错误:
本地IP访问正常连接:
内容的提问来源于stack exchange,提问作者S.M.Oth
相关产品推荐
相关产品推荐

