【发布时间】: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 缺少什么?
【问题讨论】: