为啥 Blazor 使用 post 而不是 WebSockets?
Posted
技术标签:
【中文标题】为啥 Blazor 使用 post 而不是 WebSockets?【英文标题】:Why is Blazor using post instead of WebSockets?为什么 Blazor 使用 post 而不是 WebSockets? 【发布时间】:2021-12-24 23:34:40 【问题描述】:我有一个 Blazor 服务器应用。当我在 Visual Studio 中运行应用程序时,我在浏览器控制台中看到此消息:
WebSocket connected to wss://localhost:44329/_blazor?id=HX5t9UdbZwj35PkMxV3Fkw.
所以在我看来 SignalR 正在按预期工作。在“网络”选项卡上,我看到 signalR 按预期工作并显示消息:
但是,现在我将应用程序发布到 IIS。该应用程序运行良好。但是,如果我查看浏览器控制台,我不再看到 WebSocket 正在连接。我在网络选项卡中看到的内容如下所示:
Request URL: https://blazor/_blazor?id=O_acVtnuEIOjlRAosu1YFg
Request Method: POST
其中有很多,例如每秒 1 个。
所以看起来 SignalR 不再被使用了。
这是为什么?我需要做些什么来确保使用 SignalR?
【问题讨论】:
您是否在 IIS 上安装/启用了 websocket 支持? docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/… 我没有,现在我已经更新了服务器以使用 WebSockets。如果您想发布作为答案,我会接受。 【参考方案1】:确保已在 IIS 上启用 WebSockets。以下是简要概述:
https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support
【讨论】:
以上是关于为啥 Blazor 使用 post 而不是 WebSockets?的主要内容,如果未能解决你的问题,请参考以下文章
Blazor 脚手架注册页面为啥 .cshtml 不是 .razor 文件?
Blazor Web Api 返回 text/html 而不是 application/json
为啥在 Spring Security 的 hasPermission 检查中使用“#post”而不是“post”
为啥 Django 的 HTTPResponseRedirect 使用相同的 HTTP 方法进行 PUT 而不是 POST?