出于某种原因,在将本地主机上可以正常运行的相同代码部署到我的服务器后,此行失败:
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
,并且运行良好。有什么改变可以阻止它起作用?
答案 0 :(得分:0)
好的,所以我终于找到了原因。
部署后,正在通过.net API控制器调用我所讨论的类,因此似乎在此行中尝试使用HttpContext.Current
的时间:
private static string nodePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NodeJS.Path"]);
,由于尚未初始化,因此引发了异常。
解决方案:部署之后,我要做的第一件事是加载index.html,并且随着问题的停止发生,似乎它触发了所有静态属性的正确初始化。 归根结底,这是一个棘手的初始化/生命周期问题