use*_*172 12 .net c# sockets http websocket
我正在尝试在我的应用程序中实现Web套接字,该套接字当前实现了RESTful Web API.我希望能够通过Web套接字连接公开某些信息,因此我试图弄清楚如何将正常的HTTP请求升级到Web套接字连接.
我正在尝试按照本教程
我遇到的问题是我的控制器处理从ApiController继承的Get请求,我正在尝试这样做:
if (HttpContext.Current.IsWebSocketRequest)
{
HttpContext.Current.AcceptWebSocketRequest(SomeFunction);
}
return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols);
Run Code Online (Sandbox Code Playgroud)
问题是我的HttpContext.Current总是为null,我不知道为什么.似乎没有HttpContext这样的东西.然而,我确实从请求中看到它们是一个带有请求的HttpRequestContext.这两个对象是否完全相关,是否有任何方法可以访问.IsWebSocketRequest方法,以便我可以尝试将请求升级到Web套接字连接?
我的控制器和我想做的事情:
[HttpGet]
public HttpResponseMessage GetSomething()
{
if (HttpContext.Current.IsWebSocketRequest()){
Console.WriteLine("web socket request..");
}
}
Run Code Online (Sandbox Code Playgroud)
^ HttpContext.Current始终为null.我的控制器仅从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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果提供了 HttpContext,这将从请求中获取 HttpContext。
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |