为什么HttpContext.AcceptWebSocketRequest函数在获取实例时会出错?

时间:2015-06-19 06:20:35

标签: c# asp.net websocket

根据互联网上的一些示例和this guide我创建了一个webSocket连接。

public class sockets: IHttpHandler {

    public bool IsReusable {
        get {
            throw new NotImplementedException();
        }
    }
    public void ProcessRequest(HttpContext context) {
        if (context.IsWebSocketRequest) {
            context.AcceptWebSocketRequest(new socketHandler());
        }
    }
}

public class socketHandler: WebSocketHandler {

    public socketHandler(): base(null) {}
}

行中有错误 -

context.AcceptWebSocketRequest(new socketHandler());

错误:

  

参数1:无法转换为' socketHandler'至   ' System.Func(System.Web.WebSockets.AspNetWebSocketContext,System.Threading.Tasks.Task)'

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

AcceptWebSocketRequest将方法作为参数,而不是类实例。你的代码应该是这样的:

public void ProcessRequest(HttpContext context) {
    if (context.IsWebSocketRequest) {
        context.AcceptWebSocketRequest(HandleWebSocket);
    }
}

private Task HandleWebSocket(WebSocketContext wsContext)
{
    // Do something useful
}

答案 1 :(得分:1)

在尝试使用Microsoft.Web.WebSockets中的函数时,您正在引用System.Web中的函数 添加适当的参考,它将起作用。