Виртуальный каталог 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 был единственной точкой отказа? Вы должны реплицировать эти данные или кластеризовать веб-серверы с общим хранилищем. То, что вы пытаетесь сделать, не очень хорошая идея.

  1. добавить локального пользователя с одинаковым паролем в обеих системах
  2. Предоставить доступ этому пользователю на общем ресурсе
  3. На вашем веб-сервере запустите пул приложений под этим именем пользователя.

если вы автоматически масштабируете свои серверы, чем вы захотите сделать это в коде, вы можете сделать следующее:

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
Другие вопросы по тегам