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

本文关键字:实例 出错 获取 HttpContext AcceptWebSocketRequest 函数 为什么 | 更新日期: 2023-09-27 17:57:16

根据互联网上的一些示例和本指南,我创建了一个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:无法从"套接字处理程序"转换为 'System.Func(System.Web.WebSockets.AspNetWebSocketContext,System.Threading.Tasks.Task)'

谁能帮我?

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

AcceptWebSocketRequest将方法作为参数,而不是类实例。您的代码应如下所示:

public void ProcessRequest(HttpContext context) {
    if (context.IsWebSocketRequest) {
        context.AcceptWebSocketRequest(HandleWebSocket);
    }
}
private Task HandleWebSocket(WebSocketContext wsContext)
{
    // Do something useful
}

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