我正在开发一个自托管的ASP.NET web api-application。
一切正常,但现在我正在努力HttpContext
:
我需要从客户端保存会话信息。
但HttpContext.Current
始终为空。
所以很明显我的HttpSelfHostServer
不能使用静态HttpContext-Class。
我不明白的是:为什么......?
而且我无法找到一种方法来告诉HtttpSelfHostServer
和HttpSelfHostConfiguration
都不能使用HttpContext
。
这就是我正在做的事情:
创建HttpSelfHostConfiguration
Service-Resolvers
& Routes
UserNamePassword-Validator
使用config
创建新的HttpSelfHostServer实例server.OpenAsync().Wait()
我非常感谢任何帮助我如何告诉我的服务器使用HttpContext.Current
!
干杯!
答案 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)