Используйте этот код:
HttpContext.Current.Server.MapPath("~")
Подробная ссылка:
Server.MapPath
указывает относительный или виртуальный путь для сопоставления с физическим каталогом.
Server.MapPath(".")
возвращает текущий физический каталог исполняемого файла (например, aspx)
Server.MapPath("..")
возвращает родительский каталог
Server.MapPath("~")
возвращает физический путь к корню приложения
Server.MapPath("/")
возвращает физический путь к корню доменного имени (не обязательно совпадает с корнем приложения)
Пример:
Допустим, вы указали приложение веб-сайта ( http://www.example.com/ ) на
C:\Inetpub\wwwroot
и установил приложение вашего магазина (субвеб как виртуальный каталог в 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
Если Path начинается с прямой (/) или обратной косой черты (), MapPath
метод возвращает путь, как если бы Path был полным виртуальным путем.
Если Path не начинается с косой черты, MapPath
метод возвращает путь относительно каталога обрабатываемого запроса.
Примечание. В C # @ - это буквальный строковый оператор, означающий, что строка должна использоваться «как есть» и не обрабатываться для управляющих последовательностей.
Сноски
Server.MapPath(null)
и Server.MapPath("")
будет производить такой же эффект.