C# HttpContext在通过async/await在第一次请求时使用Ninject访问注入对象时为null

C# HttpContext在通过async/await在第一次请求时使用Ninject访问注入对象时为null,c#,asp.net-mvc,asynchronous,ninject,C#,Asp.net Mvc,Asynchronous,Ninject,我在任务方法上向我的web服务器发出的第一个请求上出现了一个极其神秘的错误。之后,服务器运行正常,不会发生崩溃。错误显示: Value cannot be null. Parameter name: httpContext 它在第一行崩溃: public async Task<ActionResult> Index() { var account = await Data.Of<Account>() .AsQueryab

我在
任务
方法上向我的web服务器发出的第一个请求上出现了一个极其神秘的错误。之后,服务器运行正常,不会发生崩溃。错误显示:

Value cannot be null. Parameter name: httpContext
它在第一行崩溃:

 public async Task<ActionResult> Index()
    {
        var account = await Data.Of<Account>()
            .AsQueryable(a => a.Id == WebSecurity.CurrentUserId,
                "AllowedReportTypes",
                "AllowedReports.Parameters.ParameterChoices",
                "AllowedReports.ReportType",
                "AllowedBusinesses")
            .FirstOrDefaultAsync();
此问题仅在使用异步/等待操作时发生。当它们是同步的时,这个问题永远不会发生


有人能告诉我为什么这段代码会在我的第一个请求而不是任何后续请求时崩溃吗?谢谢。

我没有时间更新这篇文章,但我已经解决了我的问题。不幸的是,我的应用程序的基础结构设计得很糟糕

Ninject内核是通过我的用户界面项目引用的类库公开的。这意味着我必须对内核进行服务调用以解决依赖关系。例如,控制器继承了一个抽象类,该抽象类公开了属性
数据
,该抽象类在其声明中会包含以下内容:

public IWorker<DbContext> Data { get { return Kernel.Get(typeof(IWorker<DbContext>)); } }
公共IWorker数据{get{return Kernel.get(typeof(IWorker));}
不幸的是,这是一个错误,这意味着Ninject没有做太多依赖注入。我不得不重写整个项目(不幸的是,我还没有完成)


用户界面项目现在是复合根。我可以通过引用Nuget中的
Ninject.Web.Mvc
快速实现这一点,它在安装时创建了一个名为
NinjectWebCommon
的类,该类加载内核及其绑定,并在应用程序启动时将其设置为依赖项解析程序。最困难的部分是重写我所有的控制器、视图、数据访问层和后端功能。。。哎哟。

你能详细说明谁在试图访问httpContext,谁应该传递它吗?
public IWorker<DbContext> Data { get { return Kernel.Get(typeof(IWorker<DbContext>)); } }