HttpContextBase 不包含“WebSockets”MVC 的定义

Posted

技术标签:

【中文标题】HttpContextBase 不包含“WebSockets”MVC 的定义【英文标题】:HttpContextBase does not contain a definition for 'WebSockets' MVC 【发布时间】:2022-01-10 00:27:49 【问题描述】:

我已经构建了一个 rest api(mvc 应用程序)。我想重建数据加载并通过 http-post/-get 的 websocket 调用它。

我试过了:

public class WebsocketController : Controller

    
    [HttpGet("/ws")]
    public async Task Get()
    
        if (HttpContext.WebSockets.IsWebSocketRequest)
        
            using WebSocket webSocket = await
                               HttpContext.WebSockets.AcceptWebSocketAsync();
            await Echo(HttpContext, webSocket);
        
        else
        
            HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
        
    

这不起作用,因为未定义 WebSocket。

是否可以将 websocket 添加到 mvc 控制器?

在 ms 文章 (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-3.1) 中,它说要在 StartUp.cs 中添加一些内容

但我的 mvc 解决方案在 Global.asax.cs 文件中没有 startup.cs,而是一个无效的 Application_Start

【问题讨论】:

您的应用程序面向哪个 .net 框架? .net 框架 4.7.2 .net 4.7.2 文件没有 Startup.cs。 .net 4.7.2 中的 HttpContextBase 类也没有 Websocket 相关方法。您阅读的Ms文章适用于.net core,与.net 4.7.2不同 【参考方案1】:

为了让 Websocket 正常工作,我制作了一个新的 asp.net core (.net 5.0) 项目

【讨论】:

以上是关于HttpContextBase 不包含“WebSockets”MVC 的定义的主要内容,如果未能解决你的问题,请参考以下文章

HttpContextBase 等类

System.TypeLoadException:“无法从程序集“System.Web”加载类型“System.Web.HttpContextBase”,

asp.net mvc web窗体文件中如何获取HttpContextBase对象

WebSocket入门及使用指南

webapi中获取HttpContext

如何使用 Moq 在 ASP.NET MVC 中模拟 HttpContext?