HttpSelfHostServer和HttpContext.Current

时间:2012-07-05 15:38:55

标签: c# asp.net-web-api httpcontext self-hosting

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

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

我不明白的是:为什么......? 而且我无法找到一种方法来告诉HtttpSelfHostServerHttpSelfHostConfiguration都不能使用HttpContext

这就是我正在做的事情:

  1. 创建HttpSelfHostConfiguration

    • 1.1添加Service-Resolvers& Routes
    • 1.2添加自定义UserNamePassword-Validator
  2. 使用config

    创建新的HttpSelfHostServer实例
    • 2.1 server.OpenAsync().Wait()
  3. 我非常感谢任何帮助我如何告诉我的服务器使用HttpContext.Current! 干杯!

2 个答案:

答案 0 :(得分:28)

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

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

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

答案 1 :(得分:11)

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