2013-05-05 2 views
8

У меня есть концентратор SignalR. Когда клиент отключается, я хочу выполнить операцию с файлом. Для этого мне нужно получить доступ к Server.MapPath.HttpContext null в файле Signalr Hub

Однако, поскольку мой класс концентратора не является .aspx или веб-службой, нет HttpContext или запроса.

Я думал о делегировании работы IO обработчику HTTP-запросов, но я не могу создать WebRequest с относительным URI, и мне нужно иметь возможность развертывать решение в разных местах.

Как я могу получить локальный путь для использования в классах System.IO из SignalR?

System.IO.Directory.GetCurrentDirectory() дает мне местоположение рабочего процесса IIS.

ответ

14

Вы можете попробовать следующее

var path = (System.Web.HttpContext.Current == null) 
        ? System.Web.Hosting.HostingEnvironment.MapPath("~/") 
        : System.Web.HttpContext.Current.Server.MapPath("~/"); 

, который использует hostingenvironment, чтобы получить путь исполняющем приложения.

+0

saravanan, это сделал! Спасибо heaps – zaitsman

+0

Это работает, но я считаю, что вы можете просто использовать 'HostingEnvironment.MapPath', он работает во всех случаях. Таким образом, здесь можно удалить строку «null» и строку «Server.MapPath». –

+0

Да, спасибо за обновление – Saravanan

 Смежные вопросы

  • Нет связанных вопросов^_^