Получение текущего каталога 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("")
будет производить этот эффект.