Я использую свой собственный виртуальный провайдер в своем проекте ASP.Net MVC4. Назовем поставщика MyVirtualPathProvider. Поставщик зарегистрирован в OnApplicationStarted способом, как это:Пользовательский VirtualPathProvider с Ninject
HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider());
метод является частью Global.asax.cs. На вершине которой у меня есть следующие:
public class MvcApplication : NinjectHttpApplication
Теперь я хотел бы использовать [Inject] атрибут, чтобы ввести один из моих услуг, так же, как это:
[Inject]
public ILogger Logger { get; set; }
В обычае виртуальной поставщик пути я переопределен GetFile метод, где я хотел бы войти что-то с помощью нагнетаемого Logger:
public override VirtualFile GetFile(string virtualPath)
{
...
Logger.Log(...);
к сожалению, регистратор нулевой поэтому он не работает.
Я попытался пройти Logger в качестве параметра в конструкторе пользовательского виртуального провайдера путь, например:
HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider(Kernel.Get<ILogger>()));
К сожалению, это не путь, потому что у меня есть предупреждение: «предупреждение CS0618: «Ninject.Web.Common.NinjectHttpApplication.Kernel» устарел: «Не использовать Ninject в качестве локатора сервисов»
Что я сделал не так? Пожалуйста, порекомендуйте.