Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> виртуальный и физический путь, виртуальный и физический путь 
:(
    Опции темы
tsalan
Дата 23.12.2013, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.12.2013

Репутация: нет
Всего: нет



Я не сильно понимаю-что такое виртуальный путь и чем он отличается от физического?
PM MAIL   Вверх
jonie
Дата 23.12.2013, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 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")  - тут приложение расчитает где её корень и сама составит полный путь. Этот метод и надо юзать.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
tsalan
Дата 24.12.2013, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.12.2013

Репутация: нет
Всего: нет



Маленький вопрос -виртуальный путь всегда с ~ (тильда) символа начинается?
PM MAIL   Вверх
jonie
Дата 24.12.2013, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



Да, именно по его наличию код и понимает что это виртуальный путь. ~ указывает в данном случае на корневой физический каталог приложения. Если тильды не будет, то код будет решать либо это сетевой путь, либо путь UNC, либо абсолютный путь, либо относительный.

Это сообщение отредактировал(а) jonie - 24.12.2013, 17:14


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.