Виртуальный путь в ASP.NET - PullRequest
0 голосов
/ 29 ноября 2011

Я использую этот код для своей LinkButton для загрузки файла, когда вы нажимаете на него.Недавно у меня возникла эта проблема, мне нужен виртуальный путь.

Я хотел бы перенаправить на C:\inetpub\wwwroot

 string filepath = Server.MapPath("...");           
 FileInfo myfile = new FileInfo(filepath);

Так что я не знаю, что положить в Server.MapPath () потому что если я поставлю / это пойдет в базу моей папки документов, а не в

Ответы [ 4 ]

2 голосов
/ 29 ноября 2011

В данный момент вы видите папку под вашим My Documents, потому что вы запускаете / отлаживаете в папке вашего проекта, возможно, используя сервер разработки или IISExpress.

Как только вы развернете свой сайт в папку под C:\Inetpub, MapPath вернет эту папку.

Но в качестве меры безопасности вы не можете вернуть папку выше (в дереве) в качестве корневой папки из вашего приложения.

Если вам это нужно, вы должны удалить папки из возвращенного пути самостоятельно. Вы можете использовать System.IO.Path для этого.

1 голос
/ 29 ноября 2011

Вам не разрешено двигаться вверх от своего корня.Корень означает корневую папку приложения.Если вы пытаетесь это сделать, это брешь в системе безопасности.

Так что если вы хотите перейти в корень приложения, вы можете использовать Server.MapPath("~");

1 голос
/ 29 ноября 2011

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

В IIS щелкните правой кнопкой мыши на своем веб-сайте,нажмите «Добавить виртуальный каталог».Дайте ему имя и укажите, где вам нужно.Например, новый виртуальный каталог с именем 'files', указывающий на 'C: \ inetpub \ wwwroot \ files'.

Затем на своем сайте вы можете ссылаться на эти файлы, используя

/ files / filename.txt <- <strong>/ files / будет ссылаться на ваш виртуальный каталог.

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

0 голосов
/ 29 ноября 2011
Server.MapPath("~"); 

выдаст вам текущий корень веб-приложения.

...