C# HttpContext.Current即使在实现IRequiresessionState之后也是空的

C# HttpContext.Current即使在实现IRequiresessionState之后也是空的,c#,asp.net,asp.net-mvc,httpcontext,azure-ad-graph-api,C#,Asp.net,Asp.net Mvc,Httpcontext,Azure Ad Graph Api,因此,我试图让一些GraphAPI的东西与我的项目一起工作,根据这个问题: 在非常仔细地跟踪Microsoft代码示例之后,我得到了一个“HttpContext.Current.get returned null”错误 我正在调用NaiveTokenCache(这与此处Microsoft代码示例中的指定完全相同:“”) 但是当这个类加载时,我得到了上面的错误 我已经从尝试API调用的实用程序类中实现了IRequiresSessionState,但仍然收到相同的错误 我做错了什么?我在这件事上不

因此,我试图让一些GraphAPI的东西与我的项目一起工作,根据这个问题:

在非常仔细地跟踪Microsoft代码示例之后,我得到了一个“HttpContext.Current.get returned null”错误

我正在调用NaiveTokenCache(这与此处Microsoft代码示例中的指定完全相同:“”)

但是当这个类加载时,我得到了上面的错误

我已经从尝试API调用的实用程序类中实现了IRequiresSessionState,但仍然收到相同的错误

我做错了什么?我在这件事上不知所措

编辑:如果我从控制器调用它,那么Microsoft类运行良好。但一旦控制流移动到实用程序类,我就失去了会话。如何确保我的实用程序类具有相同的会话而不显式传递它

编辑#2:因此我的实用程序类以异步方法运行API调用(必须这样,web令牌请求调用是异步的)。我假设,由于它是异步的,一个新线程正在被拆分。在本例中,显式传递HttpContext是我的第一反应,但我无法按照令牌缓存的要求序列化/反序列化会话。它需要一个静态引用!嘘

编辑#3:因此,根据设计或bug,HttpContext在调用wait后无法解析

HttpContext.Current //this resolves
await foo()
HttpContext.Current //this doesn't

使用await/async调用异步方法时,指定
.ConfigureAwait(true)
以确保在线程恢复工作时重新捕获当前上下文。示例:
await doSomeTaskAsync().ConfigureAwait(true)。理想情况下,您应该将
HttpContextBase
注入到需要使用它的类中。您建议如何进行后者?取决于您的DI/IoC框架。。。我更喜欢AutoFac,它有一个内置模块,你可以注册来完成这项工作。好的,所以Igor的说明没有解决这个问题。但我确实找到了罪魁祸首:Annd我还有另一个例子,我需要HttpContext(我需要调用一个质询来从异步方法进行身份验证)和HttpContext.Current是空的,即使有Igor的指令。