18

我正在开发一个自托管的 ASP.NET Web api 应用程序。一切正常,但现在我正在努力HttpContext

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

我不明白的是:为什么..?而且我想不出一种既不告诉HtttpSelfHostServer也不HttpSelfHostConfiguration使用的方法HttpContext

这就是我正在做的事情:

  1. 创建一个HttpSelfHostConfiguration

    • 1.1 添加Service-Resolvers&Routes
    • 1.2 添加自定义UserNamePassword-Validator
  2. 使用配置创建新的 HttpSelfHostServer 实例

    • 2.1server.OpenAsync().Wait()

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

4

2 回答 2

29

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

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

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

于 2012-07-15T22:22:05.107 回答
12

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

于 2012-10-28T01:10:53.650 回答