asp.net-mvc-2 – ASP.NET MVC2 Ninject NLog(shared hosting?)=
发布时间:2020-05-24 00:28:24 所属栏目:asp.Net 来源:互联网
导读:我有一个基于 Tekpub Starter Site的MVC2应用程序,所以它使用Ninject进行依赖注入,NLog用于日志记录,还有一些其他库在各个地方.据我所知,这正是我的问题. 一切都在使用ASP.NET开发服务器(Cassini)的PC上精美地工作,但是当我部署到服务器(这是一个便宜的共享主
|
我有一个基于 Tekpub Starter Site的MVC2应用程序,所以它使用Ninject进行依赖注入,NLog用于日志记录,还有一些其他库在各个地方.据我所知,这正是我的问题. 一切都在使用ASP.NET开发服务器(Cassini)的PC上精美地工作,但是当我部署到服务器(这是一个便宜的共享主机协议))时,我得到一个NullReferenceException,它似乎与实例化记录器的Ninject有关. 这是我的Global.asax.cs的相关位 protected override void OnApplicationStarted() {
Logger.Info("App is starting"); // <-- I think this is what's causing the problem
RegisterRoutes(RouteTable.Routes);
//MvcContrib.Routing.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
SetEngines();
}
protected override IKernel CreateKernel() {
return Container;
}
internal class SiteModule : NinjectModule {
public override void Load() {
Bind<ILogger>().To<NLogLogger>();
// and a couple of others...
}
}
protected void Application_End() {
Logger.Info("App is shutting down");
}
protected void Application_Error() {
Exception lastException = Server.GetLastError();
Logger.Fatal(lastException);
}
public ILogger Logger {
get {
return Container.Get<ILogger>();
}
}
static IKernel _container;
public static IKernel Container {
get {
if (_container == null) {
_container = new StandardKernel(new SiteModule());
}
return _container;
}
}
nlog.config <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<targets>
<!--Useful for debugging-->
<target name="console" xsi:type="ColoredConsole"
layout="${date:format=HH:mm:ss}|${level}|${stacktrace}|${message}" />
<target name="file" xsi:type="File" fileName="${basedir}/App_Data/Site.log"
layout="${date}: ${message}" />
<target name="eventlog" xsi:type="EventLog" source="My App" log="Application"
layout="${date}: ${message} ${stacktrace}" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
<!-- <logger name="*" minlevel="Fatal" writeTo="eventlog" /> -->
</rules>
</nlog>
NLogLogger类: public class NLogLogger:ILogger {
private Logger _logger;
public NLogLogger() {
_logger = LogManager.GetCurrentClassLogger();
}
public void Info(string message) {
_logger.Info(message);
}
// similar for Warn,Debug,etc
堆栈跟踪: [NullReferenceException: Object reference not set to an instance of an object.] NLog.LogManager.GetCurrentClassLogger() +84 DynamicInjector8cdfc2eb02f8497596a4704e379a4bb4(Object[] ) +40 Ninject.Activation.Providers.StandardProvider.Create(IContext context) +319 Ninject.Activation.Context.Resolve() +182 Ninject.KernelBase.<Resolve>b__4(IContext context) +8 System.Linq.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) +32 System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151 System.Linq.<CastIterator>d__b1`1.MoveNext() +92 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +4187840 Ninject.ResolutionExtensions.Get(IResolutionRoot root,IParameter[] parameters) +149 Web.Application.get_Logger() in C:mvcstarterWebGlobal.asax.cs:159 Web.Application.OnApplicationStarted() in C:mvcstarterWebGlobal.asax.cs:80 Ninject.Web.Mvc.NinjectHttpApplication.Application_Start() +535 [HttpException (0x80004005): Object reference not set to an instance of an object.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app) +9024793 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo[] handlers) +131 System.Web.HttpApplication.InitSpecial(HttpApplicationState state,MethodInfo[] handlers,IntPtr appContext,HttpContext context) +194 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context) +339 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253 [HttpException (0x80004005): Object reference not set to an instance of an object.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8946484 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context) +256 如果我注释了OnApplicationStarted的日志记录,我会得到一个不同的异常.我不知道为什么会发生这种情况,因为不应该发生任何日志记录,所以我不知道为什么尝试实例化记录器. [NullReferenceException: Object reference not set to an instance of an object.] NLog.LogManager.GetCurrentClassLogger() +84 DynamicInjector5ca7d21cf56b4732957e22cb1bfd8bdd(Object[] ) +40 Ninject.Activation.Providers.StandardProvider.Create(IContext context) +319 Ninject.Activation.Context.Resolve() +182 Ninject.KernelBase.<Resolve>b__4(IContext context) +8 System.Linq.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) +32 System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +4187840 Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) +347 Ninject.Activation.Providers.StandardProvider.GetValue(IContext context,ITarget target) +138 Ninject.Activation.Providers.<>c__DisplayClass2.<Create>b__1(ITarget target) +17 System.Linq.WhereSelectArrayIterator`2.MoveNext() +85 System.Linq.Buffer`1..ctor(IEnumerable`1 source) +325 System.Linq.Enumerable.ToArray(IEnumerable`1 source) +78 Ninject.Activation.Providers.StandardProvider.Create(IContext context) +306 Ninject.Activation.Context.Resolve() +182 Ninject.KernelBase.<Resolve>b__4(IContext context) +8 System.Linq.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) +32 System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151 System.Linq.<CastIterator>d__b1`1.MoveNext() +92 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +4187840 Ninject.ResolutionExtensions.TryGet(IResolutionRoot root,String name,IParameter[] parameters) +261 Ninject.Web.Mvc.NinjectControllerFactory.CreateController(RequestContext requestContext,String controllerName) +108 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController& controller,IControllerFactory& factory) +124 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback callback,Object state) +50 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,Object state) +48 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context,AsyncCallback cb,Object extraData) +16 System.Web.Mvc.<>c__DisplayClass7.<BeginProcessRequest>b__6() +29 System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Func`1 func) +38 System.Web.Mvc.ServerExecuteHttpHandlerAsyncWrapper.BeginProcessRequest(HttpContext context,Object extraData) +97 System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler,TextWriter writer,Boolean preserveForm,Boolean setPreviousPage,VirtualPath path,VirtualPath filePath,String physPath,Exception error,String queryStringOverride) +1508 System.Web.HttpServerUtility.Execute(IHttpHandler handler,Boolean setPreviousPage) +77 System.Web.HttpServerUtility.Execute(IHttpHandler handler,Boolean preserveForm) +28 System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler,Boolean preserveForm) +22 System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper,String actionName,String controllerName,RouteValueDictionary routeValues,TextWriter textWriter) +372 System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper htmlHelper,String controllerName) +35 ASP.views_home_index_aspx.__RenderContent2(HtmlTextWriter __w,Control parameterContainer) in c:HostingSpaces<snip>wwwrootViewsHomeIndex.aspx:8 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) +109 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8 System.Web.UI.Control.Render(HtmlTextWriter writer) +10 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) +27 System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter) +100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w,Control parameterContainer) in c:HostingSpaces<snip>wwwrootViewsSharedSite.Master:48 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ControlAdapter adapter) +100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children) +208 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8 System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer) +55 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer,ControlAdapter adapter) +100 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +3060 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 什么是.MSPX文件扩展名?
- asp.net – 有没有= window.onload在Javascript?
- asp.net – 使用EF4代码优先:如何在不丢失数据的情况下更改
- asp.net-mvc-3 – ASP.NET MVC3项目并不总是发布所有的视图
- asp.net-mvc – 嵌套属性的模型绑定在asp.net mvc中
- ASP.NET Core WebApi将错误消息返回给AngularJS $http prom
- asp.net-mvc-4 – ASP.NET优化 – 捆绑
- ASP.NET网站“发布”vs Web部署项目
- ASP.net应用程序的最佳perfmon计数器是什么?
- asp.net – 错误:此程序集是由运行时比当前加载的运行时更
推荐文章
站长推荐
- asp.net-mvc – 如何从MVC WEB API Controller返
- asp.net-mvc – ASP.NET MVC:使用EF实体作为模型
- asp.net-mvc – 使用Castle Windsor在ASP.NET MV
- asp.net-mvc – 剃刀替换的优点(@href)
- asp.net-mvc-3 – ASP.NET MVC3 – DateTime格式
- asp.net-mvc-3 – 如何根据当前页面和/或主页在O
- asp.net-core – ASP.NET Core 1.0 Synchronizat
- asp.net – 使用“async”(即使它应该完成)作为M
- asp.net-mvc – 当使用AutoMapper / AutoMapView
- 单元测试 – 使用MOQ对象进行ASP.NET MVC单元测试
热点阅读
