Приложение IIS с использованием общей папки в виртуальной виртуальной машине VM

У меня есть виртуальная виртуальная машина под управлением Windows Server 2008 R2. Сервер настроен как контроллер домена.

У меня есть исходный код на моем веб-приложении на главной машине. Я поделился папкой с гостевой виртуальной машиной, содержащей исходный код. Я настроил приложение IIS на гостевом компьютере и указал его на общий ресурс (\ VBOXSVR\code).

Когда я запускаю приложение, я получаю следующее сообщение:

Модуль: IIS Web Core
Уведомление: BeginRequest
Обработчик: еще не определено
Код ошибки: 0x80070001
Ошибка конфигурации: невозможно прочитать файл конфигурации
Файл конфигурации: \?\UNC\VBOXSVR\code\web.config

Я проверил, что учетная запись пользователя, на которой запущен пул приложений, может получить доступ к Share. Есть какие нибудь идеи как это починить?

Ответы

Ответ 1

У меня была очень похожая проблема при настройке брандмауэра для Windows 2012 R2 с IIS для целей разработки. Из того, что я помню, я смог использовать следующее в качестве обходного пути, но не то, что я хотел бы реализовать в рабочей среде:

  • Сделайте C:\vagrant сетевым ресурсом и установите разрешения для доступный пользователю, работающему с IIS \\localhost\vagrant.
  • Установите веб-сайт для сайта как общий сетевой ресурс \\localhost\vagrant

В теории для вашей ситуации может работать следующее:

  • Создайте символическую ссылку на общий ресурс сети, IE: mklink /j "\\VBOXSVR\code" C:\code\
  • Сделать C:\кодом доступ к сети, доступный IIS, \\localhost\code
  • Убедитесь, что пользователь, работающий с IIS, будет иметь права доступа к общему ресурсу сети.
  • Установите веб-сайт для сайта в IIS для общего сетевого ресурса, \\localhost\code

(Необязательно) Я добавил запись в файл хоста (C:\Windows\System32\drivers\etc\host) для localhost. Это улучшило производительность, но это не обязательно.

Надеемся, это укажет вам в правильном направлении.

Ответ 2

Кажется, что проблема связана с тем, как Virtualbox разделяет папки между Host и Guest. Как я обнаружил, когда вы делаете это с настройкой Vagrant, если вы вручную создаете общий ресурс UNC на хосте, подключитесь к этому ресурсу на гостевом и наведите IIS на него, все идет гладко.

Обратите внимание, что если вы используете пулы приложений, вы должны убедиться, что пользователь, назначенный пулу, может получить доступ к ресурсу.

Если вы хотите увидеть, как выглядит несколько сценариев Powershell для автоматизации процесса, посмотрите в директории скриптов https://github.com/mefellows/vagrant-smb-plugin.

В качестве альтернативы вы можете использовать тип rsync synced-folder, который имеет преимущество гораздо лучшей производительности. Вы можете создать локальную виртуальную машину Windows с помощью Packer (примеры шаблонов).

Ответ 3

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

У меня есть настройка, в которой хост os имеет код, а виртуальный бокс vm с настройкой IIS обслуживает этот код из общей папки (общая папка vbox). Все работает так, как ожидалось.