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,似乎它触发了所有静态属性的正确初始化,因为问题不再发生。
归根结底,这是一个棘手的初始化/生命周期问题
出于某种原因,在将在本地主机上完美运行的相同代码部署到我的服务器后,此行失败:
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,似乎它触发了所有静态属性的正确初始化,因为问题不再发生。 归根结底,这是一个棘手的初始化/生命周期问题