当我部署到服务器时,HttpContext.Current.Server抛出了System.NullReferenceException类型的异常

时间:2018-11-21 08:50:24

标签: .net exception deployment httpcontext

出于某种原因,在将本地主机上可以正常运行的相同代码部署到我的服务器后,此行失败:

private static string nodePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NodeJS.Path"]);

原始异常为System.TypeInitializationException:'Turcos.App.Components.AsyncFileExporter'的类型初始值设定项引发了异常。但是很明显,因为HttpContext.Current为空,所以引发了异常。

我知道HttpContext.Current有时可以为null(https://stackoverflow.com/a/6861575/1519464),但是为什么它在我的本地而不是在服务器上工作?更奇怪的是,我以前在服务器上拥有的代码正在使用HttpContext.Current,并且运行良好。有什么改变可以阻止它起作用?

1 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了原因。 部署后,正在通过.net API控制器调用我所讨论的类,因此似乎在此行中尝试使用HttpContext.Current的时间: private static string nodePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NodeJS.Path"]);,由于尚未初始化,因此引发了异常。

解决方案:部署之后,我要做的第一件事是加载index.html,并且随着问题的停止发生,似乎它触发了所有静态属性的正确初始化。 归根结底,这是一个棘手的初始化/生命周期问题