gpt4 book ai didi

c# - 将 OwinHttpRequestContext 转换为 HttpContext? (IHttpHandler 和 websockets)

转载 作者:可可西里 更新时间:2023-11-01 08:28:35 25 4
gpt4 key购买 nike

我正在尝试在当前实现 RESTful Web API 的应用程序中实现 Web 套接字。我希望某些信息能够通过 Web 套接字连接公开,因此我想弄清楚如何将普通 HTTP 请求升级为 Web 套接字连接。

我正在尝试关注这个 tutorial

我遇到的问题是我的 Controller 处理继承自 ApiController 的 Get 请求,我正在尝试这样做:

 if (HttpContext.Current.IsWebSocketRequest)
{
HttpContext.Current.AcceptWebSocketRequest(SomeFunction);
}
return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols);

问题是我的 HttpContext.Current 始终为空,我不知道为什么。似乎没有 HttpContext 这样的东西。但是,我确实从请求中看到它们是随请求一起提供的 HttpRequestContext。这两个对象是否完全相关?有什么方法可以访问 .IsWebSocketRequest 方法,以便我可以尝试将请求升级为 Web 套接字连接?

我的 Controller 和我正在尝试做的事情:

    [HttpGet]
public HttpResponseMessage GetSomething()
{
if (HttpContext.Current.IsWebSocketRequest()){
Console.WriteLine("web socket request..");
}
}

^ HttpContext.Current 始终为空。我的 Controller 完全继承自 ApiController

最佳答案

要访问 MVC ApiController 中的 Httpcontext,请使用此代码。

        if (Request.Properties.ContainsKey("MS_HttpContext"))
{
HttpContextWrapper HttpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
if (HttpContext != null)
{
if (HttpContext.IsWebSocketRequest)
{
HttpContext.AcceptWebSocketRequest(SomeFunction);
}
}
}

如果提供,这将从请求中获取 HttpContext。

关于c# - 将 OwinHttpRequestContext 转换为 HttpContext? (IHttpHandler 和 websockets),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com