Я использую System.IO.Directory.GetCurrentDirectory(), чтобы получить текущий каталог в моей веб-службе, но это не дает мне текущий каталог. Как получить текущий каталог в веб-службе?
Спасибо Стюарт
Я использую System.IO.Directory.GetCurrentDirectory(), чтобы получить текущий каталог в моей веб-службе, но это не дает мне текущий каталог. Как получить текущий каталог в веб-службе?
Спасибо Стюарт
В веб-сервисе вы работаете в контексте http. Таким образом,
HttpContext.Current.Server.MapPath("~/")
даст вам ответ.
HttpContext.Current.Server.MapPath(".")
предоставит вам текущий рабочий каталог.
Но для комментария Рохана Уэста о потенциальном выходе за пределы HttpContext, вероятно, было бы лучше просто позвонить:
HostingEnvironment.MapPath(".")
Подробнее здесь
HttpContext.Current.Server.MapPath( "~/" ) возвращает карту в корень приложения или виртуального каталога.
HttpContext.Current.Server.MapPath( "~/" ) <-ROOT
HttpContext.Current.Server.MapPath( "." ) < - CURRENT DIRECTORY
HttpContext.Current.Server.MapPath( ".." ) < - PARENT DIRECTORY
Все вышеописанное относительное, поэтому вы можете использовать любую комбинацию для перемещения по дереву каталогов.
Вы можете использовать
AppDomain.CurrentDomain.BaseDirectory;
Это дает вам корневую директорию вашего приложения.
Лучший способ использования
HostingEnvironment.ApplicationPhysicalPath
в System.Web.Hosting
для получения дополнительной информации см. эту ссылку
HttpContext.Current.Server.MapPath("~/")
предоставит вам корень приложения?
Скорее всего, вы, вероятно, знаете путь оттуда.
Другая возможность, которая может представлять интерес:
HttpContext.Current.Server.MapPath("/Directory/")
Это происходит из корня приложения независимо от того, что.
Без первой косой черты это займет каталог, из которого вы вызываете начало:
HttpContext.Current.Server.MapPath("Directory/")
HttpContext.Current.Server.MapPath( ".." ) [наблюдать две (..) точки вместо (.)] дает физический каталог Виртуального каталога сайта!