Получение текущего каталога in.NET веб-приложение
Итак, у меня есть веб-проект, и я пытаюсь получить корневой каталог веб-сайта с помощью метода c#Directory.GetCurrentDirectory(). Я не хочу использовать статический путь, так как расположение файлов будет меняться в будущем. Этот метод выполняется в моем imageProcess.aspx.cs файл, но где я думал, что он вернется:
C:Userstcbldocumentsvisual studio 2010ProjectsModelMonitoringModelMonitoringimageProcess.aspx.cs
вместо этого я получаю:
C:Program FilesCommon FilesMicrosoft SharedDevServer.0
кто-нибудь может объяснить, почему это происходит и какое решение может быть? Большое спасибо.
2 ответа:
текущий каталог является функцией системного уровня; он возвращает каталог, из которого был запущен сервер. Это не имеет никакого отношения к сайту.
вы хотите
HttpRuntime.AppDomainAppPath.Если вы находитесь в HTTP-запросе, вы также можете позвонить
Server.MapPath("~/Whatever").
используйте этот код:
HttpContext.Current.Server.MapPath("~")Полная Ссылка:
Server.MapPathуказывает относительный или виртуальный путь для сопоставления с физическим каталогом.
Server.MapPath(".")возвращает текущий физический каталог файл (например, aspx) выполняетсяServer.MapPath("..")возвращает родительский каталогServer.MapPath("~")возвращает физический путь к корню применениеServer.MapPath("/")возвращает физический путь к корневому из доменное имя (не обязательно совпадает с корнем применение)пример:
допустим, вы указали приложение веб-сайта (http://www.example.com/) до
C:\Inetpub\wwwrootи установил приложение магазина (sub web как виртуальный каталог в IIS, помеченный как приложение) в
D:\WebApps\shopнапример, если вы называете
Server.MapPathв следующем запрос:http://www.example.com/shop/products/GetProduct.aspx?id=2342затем:
Server.MapPath(".") returns D:\WebApps\shop\products Server.MapPath("..") returns D:\WebApps\shop Server.MapPath("~") returns D:\WebApps\shop Server.MapPath("/") returns C:\Inetpub\wwwroot Server.MapPath("/shop") returns D:\WebApps\shopесли путь начинается с прямой ( / ) или обратной косой черты (), то
MapPathметод возвращает путь, как если бы путь был полный, виртуальный путь.если путь не начинается с косой черты, то
MapPathметод возвращает путь относительно каталога обрабатываемого запроса.Примечание: в C#, @ является дословным литеральным строковым оператором, означающим, что строка должна использоваться "как есть" , а не быть обработаны для escape-последовательности.
сноски
Server.MapPath(null)иServer.MapPath("")будет производить этот эффект.