Я продолжаю получать сообщение об ошибке «System.Web.HttpException: запрос недоступен в этом контексте» при создании моего ядра. Это имеет смысл, учитывая, что одно из моих привязок имеет зависимость от контекста. Очевидно, что контекст не должен присутствовать на Application_Start. Мне просто интересно, знает ли кто, как это решить.Создание ядра Ninject в Global.asax, где привязка имеет зависимость от HttpContext
public class NinjectBindings : NinjectModule
{
public override void Load()
{
//Framework
Bind<IJsonLayer>().To<JsonLayer>();
Bind<IBusinessLayer>().To<BusinessLayer>();
//Controllers
Bind<ITeamController>().To<TeamController>();
}
}
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
ReflectionUtility.Kernel = new StandardKernel(new NinjectBindings());
}
}
public class ReflectionUtility
{
private static IKernel _kernel;
public static IKernel Kernel {
set { _kernel = value; }
}
}
public class JsonLayer : IJsonLayer
{
private readonly ITeamController _teamController;
private readonly IBusinessLayer _businessLayer;
public JsonLayer(ITeamController teamController, IBusinessLayer businessLayer)
{
_teamController = teamController;
_businessLayer = businessLayer;
}
}
public class BusinessLayer : IBusinessLayer
{
//this is a super-simplification of what's going on. there are multiple different calls to HttpContext.Current.Request in this class
public BusinessLayer()
{
//This is where it breaks
var sessionUserId = HttpContext.Current.Request.Headers["X-SessionUserId"];
}
}
public class TeamController : ITeamController
{
public void DeleteTeam(int intTeam)
{
throw new NotImplementedException();
}
}
Я бы не сделать зависимость из ряда 'HttpContext', когда вы просто настроить переменную содержать впрыскивается службу, я бы тогда назначить 'HttpContext' к свойству. Только потому, что это облегчает жизнь. –