HttpSelfHostServer和HttpContext.Current

我正在开发一个自托管的ASP.NET web api-application。 一切正常,但现在我正在努力与HttpContext

我需要从客户端保存会话信息。 但是HttpContext.Current总是为null。 所以很明显我的HttpSelfHostServer不能使用静态HttpContext-Class。

我不明白的是:为什么……? 我无法想办法告诉HtttpSelfHostServerHttpSelfHostConfiguration都不能使用HttpContext

这就是我正在做的事情:

  1. 创建HttpSelfHostConfiguration

    • 1.1添加Service-ResolversRoutes
    • 1.2添加自定义UserNamePassword-Validator
  2. 使用config创建新的HttpSelfHostServer实例

    • 2.1 server.OpenAsync().Wait()

任何帮助我如何告诉我的服务器使用HttpContext.Current非常感谢! 干杯!

您将无法在自托管环境中使用HttpContext。 HttpContext由ASP.Net管道设置,如果不在IIS / ASP.Net下运行,则不会有。

HttpContext仅在Web托管模式下可用,HttpControllerHandler在其中创建请求。

仅供参考 – 我邀请您阅读Pedro Felix的以下精彩文章,以便更好地了解不同的托管模式:

  • HTTP处理架构概述
  • 虚拟主机
  • 自托管

为了解决这个问题(我发现我现在使用的很多组件需要在Web API和MVC中同样运行),你可以试试我写的这个旧的shim给你一个类似HttpContext的界面。两种口味。 它也在NuGet上,这里是源代码: github 上的 链接 (或Nuget上的链接 )