Виртуальный путь в asp.net
-
25-10-2019 - |
Вопрос
Я использую этот код для моего Linkbutton для загрузки файла, когда вы нажимаете на него. Недавно я получил эту проблему, мне нужен виртуальный путь.
Я хотел бы перенаправить на C:\inetpub\wwwroot
string filepath = Server.MapPath("...");
FileInfo myfile = new FileInfo(filepath);
Так что я не знаю, что поместить в server.mappath (), потому что, если я помесчу / он пойдет на основание моих папковых документов и нет в
Решение
Если вам нужно обслуживать файлы из другой части вашей системы, то лучший способ сделать это - это Создать виртуальный каталог.
В правой руке IIS нажмите на свой веб -сайт, нажмите «Добавить виртуальный каталог». Дайте ему имя и укажите его везде, где вам это нужно. Например, новый виртуальный каталог «Файлы», указывающие на «c: inetpub wwwroot files».
Затем в пределах вашего сайта вы можете ссылаться на эти файлы, используя
/files/filename.txt <- /файлы/ Будет ссылаться на ваш виртуальный каталог.
Затем вам, конечно, нужно убедиться, что у вас есть свои разрешения правильно, чтобы прочитать эти файлы, но я оставлю это вам.
Другие советы
В настоящее время вы видите папку под вашей My Documents
Потому что вы работаете/отлаживаетесь в папке проекта, вероятно, используя сервер разработки или iisexpress.
Как только вы развернете свой сайт в папку под C:\Inetpub
, MapPath
вернет эту папку.
Но, как мера безопасности, вы не можете вернуть папку выше (в дереве) в качестве корневой папки из вашего приложения.
Если вам это нужно, вы должны самостоятельно удалить папки с возвращенного пути. Вы можете использовать System.IO.Path
для этого.
Вам не разрешено перемещаться из вашего корня. Корень означает корневую папку приложения. Если вы так пытаетесь, это нарушение безопасности.
Поэтому, если вы хотите перейти к корню приложения, вы можете использовать Server.MapPath("~");
Server.MapPath("~");
даст вам текущий корень веб -приложения.