如何在WebSockets上跟踪500个错误(ws://)

时间:2015-06-17 18:24:48

标签: c# asp.net iis websocket

我正在尝试在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://方案加载响应主体,所以我甚至无法在Developer Tools的Network选项卡中看到它(尽管IIS提供了正文,正如我从响应'Content-Length中看到的那样)。 有没有办法在这种情况下看到响应机构?或者IIS中的WebSockets缺少什么?

2 个答案:

答案 0 :(得分:0)

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

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

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

使用相同的DLL将其与我的工作解决方案进行比较,我没有发现处理套接字的任何明显问题,因此我建议现在评论this.name = this.WebSocketContext.QueryString["username"];并将其替换为{{1}因为这似乎是唯一偏离样本的代码。保持简单直到它的工作!

答案 1 :(得分:0)

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

Do not keep Activities

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