首页 > 解决方案 > 当我部署到我的服务器时,HttpContext.Current.Server 引发了 System.NullReferenceException 类型的异常

问题描述

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

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

原始异常是System.TypeInitializationException:“Turcos.App.Components.AsyncFileExporter”的类型初始化程序引发了异常。但是很明显,因为HttpContext.Current为空,所以抛出了异常。

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

标签: .netexceptiondeploymenthttpcontext

解决方案


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

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


推荐阅读