У меня есть приложение ASP.NET MVC 5 с Owin.Как ввести объект в Global.asax?
Это мой интерфейс:
using System.Collections.Generic;
namespace MvcApp.Logging
{
public interface ILog
{
void Debug(string format, params object[] args);
void Error(string format, params object[] args);
void Fatal(string format, params object[] args);
void Info(string format, params object[] args);
void Trace(string format, params object[] args);
void Warn(string format, params object[] args);
// custom
void Write(LogType type, object properties, string message, params object[] args);
bool IsDebugEnabled { get; }
bool IsErrorEnabled { get; }
bool IsFatalEnabled { get; }
bool IsInfoEnabled { get; }
bool IsTraceEnabled { get; }
bool IsWarnEnabled { get; }
}
}
Я использую пакет NuGet Autofac.Mvc5.Owin впрыснуть Илог в конструктор контроллера. Такой подход работает отлично.
Owin Startup Класс:
builder.RegisterType<Log>().As<ILog>().InstancePerRequest();
Теперь мне нужно вводить интерфейс Илог в класс Global.asax.cs и метод Application_Start.
Возможно ли это? Что мне нужно настроить для инъекции ILog?
public class MvcApplication : HttpApplication
{
// How to inject ILog here?
protected void Application_Start()
{
// I need write for example this message
ILog.Info("Application starting");
}
}
Большое спасибо
«старт приложения» -> это где вы делаете инициализации приложения оно такое же, как ваш класс запуска приложений ... – Legends
IMHO, если ваше приложение запросило контекст базы данных, поместите его в 'Application_BeginRequest' или' Application_AuthenticateRequest', так как 'Application_Start' не содержит экземпляр HttpContext. –