因此,根据这个问题,我试图在这里使用一些GraphAPI来处理我的项目:
How to get the JWT (using OpenIdConnect) from HttpContext, and pass to Azure AD Graph API
并且紧随Microsoft代码示例之后,我收到了“ HttpContext.Current.get返回null”错误。
我正在调用NaiveTokenCache(这与Microsoft代码示例中的确切说明:“ https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect/blob/master/TodoListWebApp/Utils/NaiveSessionCache.cs”)
但是当该类加载时,出现了以上错误。
我已经从尝试API调用的实用程序类中实现了IRequiresSessionState,但仍然遇到相同的错误。
我在做什么错?我对此不知所措。
编辑:因此,如果我从控制器中调用它,则Microsoft类可以正常运行。但是,一旦控制流转移到实用程序类,我就失去了会话。如何确保我的实用程序类具有相同的会话,而无需显式传递它?
编辑2:因此,我的实用程序类将API调用作为异步方法运行(它必须Web令牌请求调用是异步的)。我假设因为它是异步的,所以正在拆分一个新线程。现在在这种情况下,我的第一个直觉是显式地传递HttpContext,但是我无法如令牌缓存所要求的那样对会话进行序列化/反序列化。需要静态参考!嘘。
编辑#3:因此,出于设计或错误的考虑,在调用await之后HttpContext将无法解析。
HttpContext.Current //this resolves
await foo()
HttpContext.Current //this doesn't