Веб-сайт на ошибках IIS при перечислении каталогов

У меня есть VPS (облачный сервер) и Visual Studio, IIS, SQL... все эти приятные вещи установлены. Я тоже иногда занимаюсь разработкой на этом VPS.

Этот веб-сайт представляет собой простой файловый менеджер. Когда он загружается, он перечисляет файлы и папки, которые находятся в папке App_Data. При этом я использую App_Data в качестве своего «корневого/домашнего/самого верхнего каталога» для файлового менеджера.

Причина, по которой я помещаю их в папку App_Data, заключается в том, что я не хочу, чтобы пользователи просто ходили так: www.mywebsite.com/ROOT/[получает список файлов]. Вместо этого, если они попытаются перейти: www.mywebsite.com/App_Data/[попытки получить список], IIS заблокирует их с красивой ошибкой (поскольку IIS блокирует доступ к этой папке).

Таким образом, веб-сайт получает доступ к структуре в папке App_Data через код позади. Вот как работает навигация по сайту. Он может загружать, загружать, перемещать файлы, переименовывать... удалять... все прямо в/внутри папки App_Data.

Единственная проблема в том, что это работает только тогда, когда я запускаю веб-сайт в Visual Studio и запускаю свои тесты, тестирую веб-сайт, отлаживаю и т. д. В тот момент, когда я публикую (через файловую систему в Visual Studio) веб-сайт в каталоге: «C: /inetpub/Sites/[WebsiteFolder]" и переходит по URL-адресу веб-сайта, веб-сайт больше не работает. Загружается, но больше не получает файловую структуру в папке App_Data, не может создавать новые папки, не может их переименовывать...

Этот веб-сайт отлично работает, когда я загружаю его через FTP в другое веб-пространство, которое размещено где-то еще в другой хостинговой компании (которая является общим хостингом).

Итак, я предполагаю (мое лучшее предположение), что IIS на моем VPS не разрешает такой доступ. И я пытался найти где-нибудь настройки IIS, которые позволили бы это сделать.

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

Возможно, вы знаете, что еще я могу попробовать?


person Fred    schedule 19.02.2016    source источник
comment
взгляните на следующую ссылку to-upload" title="asp net получает ошибку, доступ к пути запрещен при попытке загрузки"> stackoverflow.com/questions/19724297/ также вы должны прочитать следующую функцию Sever.MapPath()   -  person MethodMan    schedule 19.02.2016
comment
Больше похоже на настройку (разрешения). Было бы странно, если бы вариант общий хостинг работал, который должен быть более строгим, чем VPS, где вы владеете своим пространством (не общим, вы сами определяете уровень ограничений ).   -  person EdSF    schedule 19.02.2016


Ответы (1)


Ой, значит, это была очень глупая ошибка — но так мы учимся!

В папке App_Data не было других файлов или папок. А как мы знаем, ASP.NET не публикует пустые каталоги. Это означает, что этих пустых папок никогда не существовало, когда я опубликовал сайт.

Есть 3 способа исправить это, о которых я знаю на данный момент:

  1. Если ваше решение имеет профиль публикации (чтобы вы могли опубликовать сайт), вы можете щелкнуть правой кнопкой мыши пустую папку в Visual Studio и сказать «Опубликовать [имя папки]», например: введите здесь описание изображения
  2. Вы можете просто создать пустой файл в этом каталоге и снова опубликовать весь свой веб-сайт. Поскольку папка больше не пуста, она публикуется вместе с остальной частью веб-сайта.
  3. Просто вручную создайте папку на своем хостинге.

Спасибо за вклад каждого! Большое спасибо!

person Fred    schedule 27.02.2016