![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
tsalan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2013 Репутация: нет Всего: нет |
Я не сильно понимаю-что такое виртуальный путь и чем он отличается от физического?
|
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 3 Всего: 118 |
виртуальным в asp.net принято называть путь, который обрабатывает сереверной частью специфически и начинается с ~ (тильда) символа. Суть его в том что он заменяет абсолютный путь до файлов (его сложно поддерживать между разными серверами) и относительный (структура каталогов приложения может поменяться*).
*) кроме того по умолчанию пул iis перемещает часть приложения к себе в кеш и текущая директория может быть чёрти где, чтобы отталкиваться от неё при доступе к файлам по относительным путям. Например: нам надо отдать картинку, которая лежит в App_Data\image.png пути клиенту. Для этого её надо как-то прочитать и собственно вернуть. Мы можем: 1) указать полный путь до картинки в приложении (читай захардкодить) как-то так: Responce.WriteFile(@"C:\inet_pub\myapp\App_Data\image.png") и надеяться что никто никогда никуда ничего не переместит 2) мы можем поробывать отдать файл как Responce.WriteFile(@"App_Data/image.png") , но скорее всего это потерпит неудачу, т.к. текущий каталог будет не равен корню вашего приложения (см. WinApi функцию SetCurrentDirectory) 3) мы можем получить полный путь по виртуальному: Server.MapPath("~/App_Data/image.png") - тут приложение расчитает где её корень и сама составит полный путь. Этот метод и надо юзать. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
tsalan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 3.12.2013 Репутация: нет Всего: нет |
Маленький вопрос -виртуальный путь всегда с ~ (тильда) символа начинается?
|
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 3 Всего: 118 |
Да, именно по его наличию код и понимает что это виртуальный путь. ~ указывает в данном случае на корневой физический каталог приложения. Если тильды не будет, то код будет решать либо это сетевой путь, либо путь UNC, либо абсолютный путь, либо относительный.
Это сообщение отредактировал(а) jonie - 24.12.2013, 17:14 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |