Приложение 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). Все работает так, как ожидалось.