HttpContext.Current.Server null - PullRequest
5 голосов
/ 10 июня 2011

У меня есть служба Windows, которая использует метод из библиотеки классов с тем же решением asp.net.в библиотеке классов у меня есть метод со следующей строкой:

 reader = XmlReader.Create(HttpContext.Current.Server
             .MapPath("~/TestDevice/Data.xml"), settings);

Когда управление приходит к этой строке.Я получаю исключение.Я попытался отладить код и обнаружил, что когда служба пытается получить доступ к этому методу, HttpContext.Current.Server равен null.Что такое альтернативный синтаксис.

Я пытался получить доступ к этому методу библиотеки классов из веб-приложения, и он отлично работает.

Пожалуйста, предложите решение.

Ответы [ 3 ]

5 голосов
/ 10 июня 2011

HttpContext.Current возвращает значение NULL, поскольку служба Windows не работает под эгидой IIS или другого поставщика веб-сервера.

Однако вы можете найти путь выполнения вашего сервиса, используя отражение:

System.Reflection.Assembly.GetExecutingAssembly().Location

^ должен возвращать путь к выполняемой службе ..

0 голосов
/ 17 февраля 2017

Этот метод работает намного лучше:

string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
0 голосов
/ 10 июня 2011

Может случиться так, что при использовании службы Windows вы больше не запускаете веб-приложение, поэтому HttpContext и веб-сервер недоступны.Попробуйте использовать System.IO.File для сопоставления, посмотрите, приведет ли это к правильному каталогу.

Редактировать

private String yourFullPath = System.IO.Path.GetFullPath("/YourDirectory") + @"\";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...