Виртуальный каталог IIS 7 для доступа к общему сетевому ресурсу запрещен
У меня есть веб-сервер с балансировкой нагрузки, на котором я пытаюсь настроить виртуальный каталог на одном сервере (server02) для общего сетевого ресурса на другом сервере (server01). Оба сервера IIS 7 на Windows 2008R2. Они не являются частью домена.
Я настраиваю виртуальный каталог на server02, подключающемся к общему сетевому ресурсу, в качестве администратора server01 (для целей тестирования).
В IIS я могу просматривать файлы, которые находятся в виртуальном каталоге. Когда я нажимаю "Тестовые настройки" в основных настройках виртуального каталога, ошибок не возникает, и виртуальный каталог может без проблем подключиться к общему ресурсу.
Однако, когда я пытаюсь запросить файл ( http://server02/media/image.jpg) через виртуальный каталог, я получаю эту ошибку конфигурации "An error occurred loading a configuration file: Failed to start monitoring changes to '\\server01\media' because access is denied.
".
Я понятия не имею, что вызывает это, потому что согласно IIS связь в порядке.
2 ответа
Учетная запись пользователя, в которой запущен пул приложений вашего сайта, должна иметь разрешение на этот общий ресурс. Измените это на учетную запись с правами на эту долю, и все будет в порядке.
Кроме того, какой смысл балансировать нагрузку на ваши веб-серверы, если вы хотите, чтобы server01 был единственной точкой отказа? Вы должны реплицировать эти данные или кластеризовать веб-серверы с общим хранилищем. То, что вы пытаетесь сделать, не очень хорошая идея.
- добавить локального пользователя с одинаковым паролем в обеих системах
- Предоставить доступ этому пользователю на общем ресурсе
- На вашем веб-сервере запустите пул приложений под этим именем пользователя.
если вы автоматически масштабируете свои серверы, чем вы захотите сделать это в коде, вы можете сделать следующее:
net.exe user MyNewLocalUser Password! /ADD
net.exe share MyNewShare=C:\MyPath /Grant:MyNewLocalUser,full
если вы раскручиваете свой веб-сервер на лету, вы можете использовать следующий код для создания виртуального каталога и изменения пула приложений на нового пользователя.
Using mgr As New ServerManager
Dim MainApp As Site = mgr.Sites(SiteName)
mgr.Sites(SiteName).Applications(0).VirtualDirectories.Add("/MyVirDir", "\\server\share")
Dim appPool As String = Nothing
For Each app In MainApp.Applications
appPool = app.ApplicationPoolName
Dim myAppPool As ApplicationPool = mgr.ApplicationPools(appPool)
myAppPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser
myAppPool.ProcessModel.UserName = "MyNewLocalUser"
myAppPool.ProcessModel.Password = "Password!"
mgr.CommitChanges()
Next
End Using