HttpContext.Current.Server выдал исключение типа System.NullReferenceException при развертывании на моем сервере - PullRequest
0 голосов
/ 21 ноября 2018

По какой-то причине после развертывания того же кода, который отлично работает на локальном хосте, на мой сервер эта строка завершается неудачно:

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, и он работал отлично. Что могло измениться, чтобы это перестало работать?

1 Ответ

0 голосов
/ 21 ноября 2018

Хорошо, так что я наконец нашел причину.После развертывания мой класс вызывался через контроллер API .net, поэтому кажется, что когда HttpContext.Current пытался использовать в этой строке: private static string nodePath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NodeJS.Path"]);, он не был инициализирован, поэтому он вызвал исключение.

Решение: после развертывания первым делом я загрузил index.html и, похоже, он вызвал правильную инициализацию всех статических атрибутов, когда проблема перестала возникать.В конце концов, это была сложная проблема инициализации / жизненного цикла

...