Skip to main content
 首页 » 编程设计

c#之为什么HttpContext.AcceptWebSocketRequest函数获取实例会报错

2024年01月31日26虾米姐

根据互联网上的一些样本和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()); 

错误:

Argument 1: cannot convert from 'socketHandler' to 'System.Func(System.Web.WebSockets.AspNetWebSocketContext,System.Threading.Tasks.Task)'

谁能帮帮我?

请您参考如下方法:

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

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