【问题标题】:How to track 500 errors on WebSockets (ws://)如何在 WebSockets (ws://) 上跟踪 500 个错误
【发布时间】:2015-06-17 18:24:47
【问题描述】:

我正在尝试在 IIS 8.5 上使用 WebSockets。我从一堂课开始学习几个非常基本的 C# 类:

using Microsoft.Web.WebSockets;
using System.Web;

public class ChatHttpHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.IsWebSocketRequest)
            context.AcceptWebSocketRequest(new WebSocketChatHandler());
    }

    public bool IsReusable
    {
        get { return true; }
    }
}

public class WebSocketChatHandler : WebSocketHandler
{
    private static WebSocketCollection clients = new WebSocketCollection();
    private string name;

    public override void OnOpen()
    {
        this.name = this.WebSocketContext.QueryString["username"];
        clients.Add(this);
        clients.Broadcast(string.Format("{0} joined.", name));
    }

    public override void OnMessage(string message)
    {
        clients.Broadcast(string.Format("{0}: {1}", name, message));
    }

    public override void OnClose()
    {
        clients.Remove(this);
        clients.Broadcast(string.Format("{0} left.", name));
    }
}

和一个简单的 HTML 客户端。该项目构建正常,但是当我尝试连接到处理程序时,它返回错误 500。问题是我看不到确切的错误是什么,因为 Chrome 和 FF 都没有加载 ws:// 方案的响应正文,所以我什至无法在开发工具的网络选项卡中看到它(尽管 IIS 提供了正文,正如我从响应的 Content-Length 中看到的那样)。 有没有办法在这种情况下查看响应体?或者我在 IIS 中使用 WebSockets 缺少什么?

【问题讨论】:

    标签: c# asp.net iis websocket


    【解决方案1】:

    您应该能够在 Windows 事件查看器中看到错误原因。

    Fiddler 将向您显示连接并且它已升级到 Web 套接字,因此您可以使用该工具至少向您显示连接是否有效。我不知道有什么工具可以在升级后向您显示流经套接字的流量,尽管可能有一个。

    更好的是,在 Visual Studio 中调试它并设置断点和“异常中断”。您可以通过右键单击网站并转到属性页然后开始选项来告诉 VS 使用 IIS 作为服务器。勾选 Use custom server 并将您的 URL 放入文本框中。点击Specific page 并选择您的默认页面。

    将它与我使用相同 DLL 的工作解决方案进行比较,我没有发现任何明显的套接字处理问题,因此我建议现在将 this.name = this.WebSocketContext.QueryString["username"]; 注释掉,并用 this.name = "TEST"; 替换它。成为唯一偏离样本的代码。在它工作之前保持简单!

    【讨论】:

    • 如果我的回答不能帮助您找到启动 Web 套接字的问题或 C# 中的异常,我建议从您的解决方案中发布相关的最小 JavaScript。
    【解决方案2】:

    问题出在 web.config 上。 我加了

    <httpRuntime targetFramework="4.5.1" />
    

    到 system.web 部分,它终于开始工作了

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 2022-01-20
      • 2017-10-14
      • 1970-01-01
      • 2011-01-03
      • 2011-07-03
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多