c# - WebSocket 客户端的状态不会因网络丢失而改变

标签 c# asp.net .net websocket

使用 Microsoft.Web.WebSockets.WebSocketHandler 处理 WebSocket 服务器,我将连接的客户端保存在 WebSocketCollection 中。当客户端失去网络连接时,服务器不会调用 OnClose 和 OnError 方法。此外,查看集合中的特定客户端会发现其 WebSocket.State 仍被描述为已连接。这是在 IIS8 上。

除了手动向客户端发送消息并寻找响应之外,还有其他方法可以确定客户端已掉线吗?是否缺少某些 IIS 配置?谢谢。

最佳答案

我能够通过两个步骤解决我的问题。首先,我在提示符下运行以下命令来编辑 IIS 配置。

cd \Windows\System32\inetsrv
appcmd unlock config /section:system.webServer/websocket

然后我用以下内容更新了我的 Web.config。

<system.webServer>
    <webSocket enabled="true" pingInterval="00:00:05" />
<system.webServer />

对于 IIS Express 和 VS 项目,您必须编辑“applicationhost.config”文件并更改 overrideModeDefault="Allow"

<configSections>
        <sectionGroup name="system.webServer">
            ...
            <section name="webSocket" overrideModeDefault="Allow" />
        </sectionGroup>
<configSections>

关于c# - WebSocket 客户端的状态不会因网络丢失而改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502755/

相关文章:

c# - 在 OpenQA.Selenium (C#) 中找不到 WebDriverWait 类

c# - HtmlAgilityPack MixedCodeDocument 的预期用途是什么?

asp.net - 将视频嵌入 ASP.NET 网站的最佳解决方案是什么?

.net - 我可以在 Reflector 中针对我的枚举看到的公共(public) "value__"字段的目的是什么?

.net - 覆盖文本框中的默认按键行为

c# - 如何以编程方式检查系统上是否安装了 SQL Server Management Studio?

c# - 使用 LINQ 进行简化 - 基本选择

c# - 鼠标位置如何转换为滚动控件?

c# - 如何删除 DataGridView 中不需要的列?

asp.net - 如何提示输入连接字符串的用户名和密码?