我有Owin的ASP.NET MVC 5应用程序。
这是我的界面:
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将ILog注入控制器的构造函数中。这种方法很有效。
Owin Startup Class:
builder.RegisterType<Log>().As<ILog>().InstancePerRequest();
现在我需要将ILog接口注入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");
}
}
非常感谢
答案 0 :(得分:0)
Global.asax中的Application_Start方法在Owin Startup.Configuration之前运行。 因此,即使您找到了将ILog接口注入Application_Start方法的方法,该接口也不会在那时解析。
在依赖关系解析后,不要在Application_Start方法中使用ILog,而是在Owin Startup.Configuration方法中使用它。
Here's关于Global.asax与Owin Startup的一个很好的问题,这是一个很好的阅读