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

HttpContext.Current.Server threw an exception of type System.NullReferenceException when I deploy to my server

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

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

原始异常是 System.TypeInitializationException: 'Turcos.App.Components.AsyncFileExporter' 的类型初始值设定项抛出异常。但是可以清楚的看到抛出异常是因为HttpContext.Current为null.

我知道 HttpContext.Current 有时可以为空 () 但为什么它在我的本地而不是在服务器上工作?更奇怪的是,我之前在服务器上使用的代码使用的是 HttpContext.Current 并且运行良好。是什么改变阻止了它的工作?

好的,所以我终于找到了原因。 部署后,我的 class 问题是通过 .net API 控制器调用的,所以似乎 HttpContext.Current 试图在这一行中使用: private static string nodePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NodeJS.Path"]);,它没有被初始化,所以它抛出了异常。

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