Ошибка IIS 7 и 503 для отказа в доступе к копированию файла - PullRequest
12 голосов
/ 21 августа 2011

Я использую Windows 7 с пакетом обновления 1 (SP1) и только что включил IIS 7. Просто пытаясь получить доступ к странице по умолчанию, которая создается, я получаю ошибку 503, и пул приложений останавливается.Я просматриваю журнал событий и нахожу ошибку:

Windows не может скопировать файл \? \ C: \ Users \ Default \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ SQM \ iesqmdata_setup0.sqm в папку \? \ C: \ Users \ TEMP.IIS APPPOOL.000 \ AppData \ Local \ Microsoft \ Windows \ Временные файлы Интернета \ SQM \ iesqmdata_setup0.sqm.Эта ошибка может быть вызвана проблемами с сетью или недостаточными правами безопасности.

ДЕТАЛИ - Доступ запрещен.

Я попытался сделать папку TEMP.IIS APPPOOOL.000 доступной для всех.Я пытался сделать пользователей доступными для всех.Не повезло, он все равно умирает с той же ошибкой.

Что здесь происходит, и как это можно исправить?

Ответы [ 4 ]

14 голосов
/ 21 августа 2011

Похоже, что у вас та же проблема, что и детали в этой ветке форумов IIS.NET . Вы не упомянули, если у вас есть x64 Windows 7 или нет. Подозреваю, что ваш компьютер для разработки каким-то образом неправильно настроен; Похоже, удаление и повторная установка IIS7 поможет / исправить.

Предлагаемые варианты действий:

  • Откройте IIS и его пулы приложений. Откройте «DefaultAppPool» и любые другие используемые пулы приложений.
  • Нажмите Расширенные настройки для каждого из них. Убедитесь, что для параметра «Загрузить профиль пользователя» установлено значение «Ложь»
  • Также убедитесь, что для параметра «Установить значения по умолчанию для пула приложений» для параметра «Загрузить профиль пользователя» установлено значение «Ложь».
1 голос
/ 02 июня 2014

Я столкнулся с той же проблемой в моей среде разработки (Windows 8.1). Вместо того, чтобы отключить загрузку профиля пользователя, как предложил P.Campbell, я пошел дальше и изменил разрешение файла sqm, чтобы разрешить изменение доступа для IUSR, IIS_IUSRS и Network Service. В моем случае файл sqm не смог показать мне владельца файла, в который я перешел со своей учетной записи пользователя.

По сути, моя проблема была решена путем предоставления правильного разрешения для исходных и целевых файлов / папок.

0 голосов
/ 13 февраля 2017

После борьбы со всеми этими проблемами в пуле приложений во II я нашел проблему и решение. Это может вам помочь.

Каждый пул приложений на каждом веб-сайте Microsoft Internet Information Server создает собственную учетную запись пользователя и папку в каталоге «c: \ Users» при создании и первом запуске пула. Это фактически виртуальная учетная запись пользователя и должна быть названа для пула приложений, назначенного вашему веб-приложению в IIs. В большинстве сред разработки это веб-сайт по умолчанию или «DefaultAppPool». Он использует эту временную учетную запись пользователя для запуска пула. Каждый веб-сайт должен иметь именованную учетную запись пула пользователей. Эта папка User используется пулом и ASP.NET для кэширования и записи файловых ресурсов и других вещей, используемых IIs, ASP.NET и этой виртуальной учетной записью.

В некоторых установках люди видят не эту папку, а папку "TEMP" (как у вас) при доступе к веб-сайту IIs и использовании пула.

Если вместо этого вы видите папку «TEMP» в папке «Пользователи», у вас есть испорченная учетная запись пула приложений во II и в реестре. Пул создает папку TEMP в качестве резервной копии для этой виртуальной учетной записи, которая может не иметь правильной настройки безопасности. У меня был именно такой сценарий.

Чтобы исправить это перейдите в реестр в: HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList Проверьте, есть ли у вас учетная запись пользователя SID с расширением «.bak» для учетной записи пользователя DefaultAppPool. Если это так, удалите его и перезагрузите компьютер. Протестируйте свой сайт снова, убедившись, что он действительно настроен на использование DefaulAppPool. Теперь он должен воссоздать папку «DefaultAppPool» в «Пользователи», заново создать запись реестра для пользователя DefaulAppPool, и ваша ошибка должна исчезнуть.

Вы можете удалить папку пользователя TEMP в этой точке в папке Users. (Имейте в виду, что если ваше веб-приложение хранит кэшированную информацию, критически важную для пользователей веб-сайта, некоторые из них, возможно, придется вставить в новую пользовательскую папку DefaultAppPool. Но для большинства из нас просто удалите ее.)

Я также обнаружил, что мне пришлось добавить эту странную учетную запись пула виртуальных приложений в мою локальную базу данных, чтобы рабочий процесс и пул приложений могли иметь права на получение данных из SQL Server: просто зайдите в SQL Server и под логинами добавьте «IIs». AppPool \ DefaultAppPool ", а затем назначьте его в качестве пользователя для ваших баз данных.

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

После того, как я сделал это, все мои ошибки переполнения стека исчезли в Visual Studio для моего веб-приложения, все подключения к данным сработали отлично, все права на запись в профиль пользователя по умолчанию сохранены правильно, а также все перезапуски и сбой пула приложений. во II закончилась полностью. :)

0 голосов
/ 30 декабря 2014

Нашел ответ здесь - http://forums.iis.net/p/1180636/1992024.aspx

  • Откройте диспетчер IIS
  • Найдите пул приложений, вызывающий проблему
  • Откройте дополнительные свойства
  • Изменить «Загрузить профиль пользователя» на false

Исправлено!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...