Меню

Ошибка доступа к файлу web config

  • Remove From My Forums
  • Question

  • Hello,

    I would like to modify Web.Config file using SPWebConfigModification class in Item added,Updated and Deleted Event receiver.now i wrote following piece of code but its give me access denied error but if i used same piece of code in console application it
    works.Sound like its not elevating permisson in Event receiver code.

     SPWebConfigModification[] webConfigModification = { 
                                    new SPWebConfigModification("addRootNode","configuration/system.webServer") {
                                      Owner=_owner,
                                      Sequence=0,
                                      Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                                      Value=@"<rewrite>
                                            <rules></rules>
                                          </rewrite>"
                                    }, 
                                    new SPWebConfigModification(properties.ListItem["RuleName"].ToString(),"configuration/system.webServer/rewrite/rules"){
                                        Owner=_owner,
                                        Sequence=1,
                                        Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                                        Value = properties.ListItem["Rule"].ToString()
                                    }
                                   };
          SPSecurity.RunWithElevatedPrivileges(() => {
            using (SPSite site = new SPSite(properties.SiteId)) {
              SPWebApplication webApp = site.WebApplication;
              foreach (SPWebConfigModification modification in webConfigModification) {
                webApp.WebConfigModifications.Add(modification);
              }
              webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
              webApp.Update();
            }
          
          });
    

    Please advise how can Elevated following code to run under system account.

    Thanks

    Ronak


    Thanks Ron

Answers

  • I was hoping that the app.pool account of your content webapplication also had access to the config database.

    You could try to impersonate the farm admin :

    private const int LOGON_TYPE_INTERACTIVE = 2;
    private const int LOGON_TYPE_PROVIDER_DEFAULT = 0;
    
    [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    public static extern bool LogonUser(string userName, string domain, string password, int logonType, int logonProvider, ref IntPtr accessToken);
    
    void UpdateWebApplication()
    {
      IntPtr accessToken = IntPtr.Zero;
    
      if (LogonUser("farm-admin-username", "domain-name", "password", LOGON_TYPE_INTERACTIVE, LOGON_TYPE_PROVIDER_DEFAULT, ref accessToken))
      {
        using (var identity = new WindowsIdentity(accessToken))
        {
          using (identity.Impersonate())
          {
            //Put your code here
          }
        }
      }
    }
    
    • Marked as answer by

      Monday, May 30, 2011 2:28 AM

  • No its not best practices. You shouldn’t be updating SPPersistedObjects from your content application in the first place.

    The RevertToAppPool snippet you posted. Will run your code as the application pool account. Just like RunWithElevatedPrivileges will. However your application pool account only has access to the content database. It has no access to the configuration database
    where SPPersistedObjects are stored.

    You do not have to stop impersonation in my snippet. Once WindowsImpersonationContext is disposed it will stop impersonation. If you are running with NTML you will not be able to call the database with an impersonated user (double hop).

    You could grant you content application apppool account access to the config database or make your content apppool run with the same account as your central admin apppool. However I would still recommend that you rethink your design 🙂

    • Marked as answer by
      Porter Wang
      Monday, May 30, 2011 2:28 AM

  • Remove From My Forums
  • Question

  • Hello,

    I would like to modify Web.Config file using SPWebConfigModification class in Item added,Updated and Deleted Event receiver.now i wrote following piece of code but its give me access denied error but if i used same piece of code in console application it
    works.Sound like its not elevating permisson in Event receiver code.

     SPWebConfigModification[] webConfigModification = { 
                                    new SPWebConfigModification("addRootNode","configuration/system.webServer") {
                                      Owner=_owner,
                                      Sequence=0,
                                      Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                                      Value=@"<rewrite>
                                            <rules></rules>
                                          </rewrite>"
                                    }, 
                                    new SPWebConfigModification(properties.ListItem["RuleName"].ToString(),"configuration/system.webServer/rewrite/rules"){
                                        Owner=_owner,
                                        Sequence=1,
                                        Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                                        Value = properties.ListItem["Rule"].ToString()
                                    }
                                   };
          SPSecurity.RunWithElevatedPrivileges(() => {
            using (SPSite site = new SPSite(properties.SiteId)) {
              SPWebApplication webApp = site.WebApplication;
              foreach (SPWebConfigModification modification in webConfigModification) {
                webApp.WebConfigModifications.Add(modification);
              }
              webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
              webApp.Update();
            }
          
          });
    

    Please advise how can Elevated following code to run under system account.

    Thanks

    Ronak


    Thanks Ron

Answers

  • I was hoping that the app.pool account of your content webapplication also had access to the config database.

    You could try to impersonate the farm admin :

    private const int LOGON_TYPE_INTERACTIVE = 2;
    private const int LOGON_TYPE_PROVIDER_DEFAULT = 0;
    
    [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    public static extern bool LogonUser(string userName, string domain, string password, int logonType, int logonProvider, ref IntPtr accessToken);
    
    void UpdateWebApplication()
    {
      IntPtr accessToken = IntPtr.Zero;
    
      if (LogonUser("farm-admin-username", "domain-name", "password", LOGON_TYPE_INTERACTIVE, LOGON_TYPE_PROVIDER_DEFAULT, ref accessToken))
      {
        using (var identity = new WindowsIdentity(accessToken))
        {
          using (identity.Impersonate())
          {
            //Put your code here
          }
        }
      }
    }
    
    • Marked as answer by

      Monday, May 30, 2011 2:28 AM

  • No its not best practices. You shouldn’t be updating SPPersistedObjects from your content application in the first place.

    The RevertToAppPool snippet you posted. Will run your code as the application pool account. Just like RunWithElevatedPrivileges will. However your application pool account only has access to the content database. It has no access to the configuration database
    where SPPersistedObjects are stored.

    You do not have to stop impersonation in my snippet. Once WindowsImpersonationContext is disposed it will stop impersonation. If you are running with NTML you will not be able to call the database with an impersonated user (double hop).

    You could grant you content application apppool account access to the config database or make your content apppool run with the same account as your central admin apppool. However I would still recommend that you rethink your design 🙂

    • Marked as answer by
      Porter Wang
      Monday, May 30, 2011 2:28 AM

  • Remove From My Forums

 none

Доступ к центру сертификации

  • Question

  • Добрый день.

    Есть домен-контроллер под управлением Windows Server 2012 R2.

    Для создания сертификата для Exchange установил следующие роли:

    Центр сертификации, Служба регистрации в центре сертификации через интернет, Сетевой ответчик.

    Все что запросили было установлено с параметрами по умолчанию.

    Установилось все без проблем. Затем включил функцию SAN, перезапустил службы центра сертификации.

    Все делал под учетной записью администратора домена.

    Теперь при попытке зайти через web-браузер под учетной записью администратора домена получаю ошибку доступа:

    Ошибка HTTP 500.19 — Internal Server Error

    Запрашиваемая страница не доступна из-за неверной конфигурации данных для этой страницы.

    <fieldset>

    Наиболее вероятные причины:

    • Рабочий процесс не может прочитать файл applicationhost.config или web.config.
    • В файле applicationhost.config или web.config содержится неверно сформированный XML.
    • Сервер не может получить доступ к файлу applicationhost.config или web.config из-за неверных разрешений NTFS.

    </fieldset>

    <fieldset>

    Возможные решения:

    • Сведения о том, почему файлы конфигурации не читаются, можно получить в журналах событий.
    • Убедитесь, что удостоверение пользователя для пулов приложений, или пользователь, прошедший проверку, имеют разрешения, необходимые для получения доступа к файлу web.config.

    </fieldset>

    <fieldset>

    Подробные сведения об ошибке:

    Модуль    DynamicCompressionModule
    Уведомление    SendResponse
    Обработчик    ExtensionlessUrlHandler-Integrated-4.0
    Код ошибки    0x8007007e
    Запрошенный URL-адрес    http://localhost:80/CertSrv
    Физический путь    C:Windowssystem32CertSrvru-RU
    Метод входа    Пока не определено
    Пользователь, выполнивший вход    Пока не определено

    </fieldset>

    В журналах событий ничего не нашел.

    Подскажите, что может быть не так.

Answers

  • Нашел решение.

    Возможно, кому-то поможет.

    Данная проблема — отголосок ранее установленного и потом удаленного WSUS.

    WSUS устанавливает XPress compression schema module (suscomp.dll). Эта схема определяется как глобальная и пытается загрузиться в каждый Application Pool. После удаления WSUS в applicationhost.config остается загрузка этой схемы и если
    в Application Pool разрешен 32-битный режим [enable32BitAppOnWin64], то происходит конфликт с 64-битной suscomp.dll.

    Как от этого избавится.

    1.Делаем (на всякий случай) копию applicationhost.config.

    2.Открываем applicationhost.config например в Notepad и находим следующую схему:

    <scheme name="xpress" doStaticCompression="false"  doDynamicCompression="true" dll="C:Windowssystem32inetsrvsuscomp.dll"  staticCompressionLevel="10" dynamicCompressionLevel="0"
    />

    чтобы убедится что действительно она есть.

    3.В командной строке выполняем команду:

     %windir%system32inetsrvappcmd.exe set config  -section:system.webServer/httpCompression /-[name='xpress']4.Открываем applicationhost.config например в Notepad и проверяем что схему
    убрана.

    5.Перезапускаем IIS.

    • Marked as answer by

      Friday, September 25, 2015 11:56 AM

Мы описывали как настраивать веб-публикацию на IIS в инструкции.

Но после настройки веб-публикации при подключении к базе может возникать ошибка “Ошибка HTTP 500.0 — Internal Server Error”.

Если модуль был установлен с 32-битного клиента, то требуется это указать в пуле приложений. Для этого мы делаем следующую настройку:

  • Заходим в Панель управления → Администрирование → Диспетчер служб IIS.
  • Выбираем Пулы приложения которые задействованы в веб-публикации, в нашем случае DefaultAppPool.
  • Нажимаем ПКМ Дополнительные параметры.
  • В строке Разрешены 32-разрядные приложения мы указываем True как на Рисунке 1.
  • Нажимаем ОК.

главная страница

Рисунок 1 — Дополнительные параметры пула приложений

Если не сработало, есть следующие возможные решения:

  1. Убедитесь, что разрешения NTFS для файла web.config верны и обеспечивают доступ к учетной записи компьютера веб-сервера. Заходим в директорию, где размещена публикация (по умолчанию — C:inetpubwwwrootИМЯ_БАЗЫ). Нажимаем ПКМ на web.config → Свойства → Безопасность. Убедитесь в том, что у группы IIS_USERS есть права на чтение, выполнение, запись и изменение файла. Если нет — нажмите кнопку Изменить, в появившемся окне Добавить → Дополнительно и найдите в списке IIS_USERS. Добавьте эту группу и назначьте соответствующие права.
  2. Проверьте журналы событий, чтобы посмотреть, была ли зафиксирована какая-либо дополнительная информация. Открываем Выполнить (ПКМ на кнопку меню пуск или сочетанием клавиш Win+R), вводим “eventvwr.msc”, нажимаем Enter. Возможно, журнал даст подсказку какой компонент может сбоить.
  3. Переустановите компонент IIS на сервере. В диспетчере серверов удалите роль Веб-сервера IIS, перезагрузите сервер, а затем установите заново через оснастку Добавить роли и компоненты.
  4. Установите компонент расширения .NET, если запрос сопоставлен управляемому обработчику.

В Windows Server 2012 и младше: заходим в Диспетчер серверов → Добавить роли и компоненты → Роли сервера → Веб-сервер (IIS) → Веб-сервер → Разработка приложений → Расширяемость .NET. Далее идём далее по указаниям системы.

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

Нужна готовая настройка веб-доступа к 1С? Попробуйте наш сервер 1С в аренду, в услугу включены все настройки и обслуживание.

Недавно я столкнулся с ошибкой при попытке разместить мой сайт asp.net с помощью IIS. Я нашел решение, которым многие верят.

Решение:

  1. Добавить IIS_IUSRS с разрешением на чтение для файлов в папке
  2. Измените метод проверки подлинности IIS на BasicAuthentication
  3. обновите сайт. Это сработает

(http://vivekthangaswamy.blogspot.com/2009/07/ aspnet-website-cannot-read.html)

Что я могу добавить в свой файл web.config? Мне никогда раньше не приходилось его редактировать. Вот его текущее содержание:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

Моя ошибка:

Ошибка конфигурации: не удается прочитать файл конфигурации из-за недостаточных разрешений
Файл конфигурации: ? C: Users ***** Documents Visual Studio2010 WebSites PointsForTime web.config

30 ответов

Лучший ответ

Нет проблем с вашим web.config . Ваш веб-сайт работает в рамках процесса. В iis вы можете определить идентичность этого процесса. Удостоверение , под которым пул приложений вашего веб-сайта ( Сетевые службы, локальная система и т. Д.), Должно иметь разрешение на доступ и чтение в Интернете. .config файл.

Обновить:

Этот обновленный ответ такой же, как и выше, но немного длиннее, проще и улучшен.

Прежде всего : вам не нужно ничего менять в файле конфигурации. Все в порядке . Проблема связана с разрешениями для файлов Windows .

Эта проблема возникает из-за того, что ваше приложение не может получить доступ и прочитать файл web.config .

Сделайте файл доступным для группы IIS_IUSRS . Просто щелкните правой кнопкой мыши web.config и выберите свойства на вкладке безопасность , добавьте IIS_IUSRS .

Так что это за штука IIS_IUSRS?

Ваш веб-сайт представляет собой файл EXE . Как и любой exe-файл, он должен быть запущен пользователем и запускается в соответствии с разрешениями , назначенными этому пользователю.

Когда ваш сайт запускается в IIS , Пул приложений вашего веб-сайта связывается с пользователем ( Сетевые службы, Локальная система < / em> и т. д. …) (и может быть изменено в IIS)

Поэтому, когда вы говорите IIS_IUSRS , это означает любого пользователя ( Сетевые службы, локальная система и т. Д. …), что ваш сайт работает как .

И как @Seph упоминается в комментарии ниже : Если ваш компьютер находится в домене , помните, что Группа IIS_IUSRS — это локальная группа . Также убедитесь, что, когда вы пытаетесь найти этого пользователя, проверьте местоположение, он должен быть установлен на локальный компьютер, а не на корпоративный домен.


614

Sнаđошƒаӽ
25 Окт 2019 в 08:27

Примечание редактора: выполнение того, что предлагает этот ответ: «изменение удостоверения на LocalSystem» ОПАСНО! Учетная запись LocalSystem — это…

Полностью доверенная учетная запись, в большей степени, чем учетная запись администратора. В одном ящике нет ничего, что эта учетная запись не могла сделать, и у него есть право доступа к сети в качестве машины (для этого требуется Active Directory и предоставление разрешений учетной записи компьютера для чего-либо)


Изменение идентификатора с ApplicationPoolIdentity на LocalSystem сделало свою работу;).

Я использую win7 64 с IIS 7.5

Больше о Идентификатор пула приложений в IIS 7.5 и win 7

enter image description here


67

MeSo2
4 Янв 2022 в 16:33

У меня была такая же проблема, когда я попытался поделиться корневой папкой сайта с другим пользователем. Какая-то папка потеряла разрешение. Итак, я выполнил шаги, чтобы добавить разрешение группе IIS_IUSRS , как было предложено Афшин Гх. Проблема в том, что эта группа была недоступна для меня. Я использую windows 7.

Что я сделал, я просто изменил несколько шагов:

  1. Щелкните правой кнопкой мыши родительскую папку (которая потеряла разрешение),
  2. Свойства => Безопасность => В «Имена групп или пользователей:»,
  3. Щелкните Изменить …
  4. Откроется окно «Разрешение для вашей папки».
  5. В «Имена групп или пользователей:» нажмите ДОБАВИТЬ … btn,
  6. Введите Authen и нажмите Проверить имена,
  7. Вы увидите полное название группы « Прошедшие аутентификацию «.
  8. Нажмите ок => применить.
  9. Это должно снова включить привилегии.

Это сработало для меня.


71

IgorAlves
22 Сен 2015 в 15:49

Вам не нужно ничего менять в файле web.config.

Проблема в разрешениях файловой системы. Ваши права доступа к файлу не позволяют пользователю IIS_IUSRS получить доступ к web.config (или, возможно, к любому из файлов). Измените их права доступа к файлам в Windows, чтобы позволить учетной записи IIS_IUSRS получить к ним доступ.


19

Erik Funkenbusch
11 Апр 2011 в 03:28

Сделайте файл доступным для группы IIS_IUSRS . Щелкните правой кнопкой мыши свой web.config, разверните свойства и на вкладке безопасности добавьте IIS_IUSRS. Предоставьте группе доступ для чтения / записи.

Когда группа НЕ доступна, замените IIS_IUSRS на ComputerName IIS_IUSRS .


21

Kurt Van den Branden
24 Окт 2016 в 10:55

Когда вы предоставляете разрешения для IIS_IUSRS , вы должны проверить, что в разделе IIS / Authentication вашего веб-приложения учетные данные для анонимной аутентификации используют идентификатор пула приложений, а не IUSR.

enter image description here


14

Carlos
23 Июн 2015 в 03:18

Перейдите в родительскую папку, щелкните правой кнопкой мыши и выберите Свойства . Выберите вкладку Безопасность , измените разрешения и Добавить . Нажмите Дополнительно и Найти . Выберите IIS_IUSRS и снова нажмите ОК и ОК . Убедитесь, что у вас установлен флажок Запись . Снова нажмите ОК и ОК .

Работа сделана!


13

Quinny
8 Янв 2012 в 13:21

По какой-то причине ваш web.config установлен только для чтения. Снимите флажок только для чтения в файле web.config.


8

Luis
7 Ноя 2011 в 18:35

Я использовал subst для создания сопоставления от D: до C:, чтобы сохранить те же настройки, что и у других разработчиков в команде. Это также дало мне те же ошибки, что и описано. Удаление этого исправило это для меня.


4

Sniipe
25 Сен 2012 в 19:10

Вместо предоставления доступа всем пользователям IIS, таким как IIS_IUSRS, вы также можете предоставить доступ только к идентификатору пула приложений с помощью сайта. Это рекомендованный подход Microsoft, дополнительную информацию можно найти здесь:

https://support.microsoft.com/en-za/help/4466942/understanding-identities-in-iis

https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities

Fix :

enter image description here

Начните с просмотра параметра файла конфигурации выше, чтобы определить расположение, к которому требуется доступ. В этом случае требуется доступ ко всей папке publish. Щелкните правой кнопкой мыши папку и выберите свойства, а затем вкладку Безопасность.

enter image description here

Нажмите Edit..., а затем Add....

Теперь посмотрите на Диспетчер информационных служб Интернета (IIS) и пулы приложений:

enter image description here

В моем случае мой сайт работает в пуле приложений LocalTest, а затем я ввожу имя IIS AppPoolLocalTest

enter image description here

Нажмите Check Names, и пользователь должен быть найден.

enter image description here

Дайте пользователю необходимый доступ (по умолчанию: чтение и выполнение, список содержимого папки и чтение), и все должно работать.


5

Ogglas
8 Июл 2020 в 12:31

Это произошло с нами, когда в приложении IIS есть виртуальный каталог с физическим путем , который содержит косые черты / вместо обратной косой черты . Это было случайно сделано с помощью API управления PowerShell для IIS в процессе непрерывной доставки.

Пример неверной конфигурации — applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:inetpubMySite/MyService" />
</application>

Убедитесь, что атрибут physicalPath не содержит косых черт / , а только обратных косых черт

Исправленный пример конфигурации — applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:inetpubMySiteMyService" />
</application>


4

SliverNinja — MSFT
22 Окт 2016 в 01:35

Для меня ошибка возникла во время отладки на моем локальном компьютере и оказалась связанной с базовым файлом web.config, который запускается .NET Framework при компиляции веб-сайта. В моем файле C: Windows Microsoft.NET Framework64 v4.0.30319 Config web.config был нераспознанный элемент (folderLevelBuildProviders). Исправление этого исправило ошибку 500.19.

См. Это: Диспетчер IIS не может настроить компиляцию .NET. в приложениях .NET 4


2

Community
23 Май 2017 в 14:47

У меня была такая же проблема с правами доступа к файлу web.config.

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

Решение состояло в том, чтобы установить модуль перезаписи.


87

TylerH
8 Фев 2022 в 19:53

Изменение идентификатора модели процесса на LocalSystem устранило эту проблему для меня. Вы можете найти этот параметр, если щелкните правой кнопкой мыши пул приложений и выберите «Дополнительные параметры». Я использую IIS 7.5.


3

jshoaf
3 Июн 2015 в 20:28

Переместите свой проект на другой диск, кроме C: У меня работала с той же ошибкой.


3

Talha Imam
16 Фев 2017 в 14:12

Принятое решение меня не устроило. Я использую репозиторий Git, и он клонирован в следующую папку

c:usersmyusernamesourcereposmyWebSite

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

Он начал работать только тогда, когда я дал следующие разрешения группе «Пользователи», и наследование каскадировало разрешения для web.config. Вероятно, следовало применить его только к web.config, чтобы уменьшить площадь поверхности атаки.

User Pemissions


3

Tom McDonald
24 Май 2017 в 20:03

Все предоставленные ответы действительны и работают при различных обстоятельствах.

Для меня перезапуск Visual Studio сработал.


3

Doruk
31 Май 2019 в 09:17

У нас был веб-сайт, работающий с определенным идентификатором в пуле приложений, только после предоставления этому пользователю доступа для чтения к папке, содержащей web.config, он работал бы. Мы отследили это после добавления пользователя «все» с функцией чтения, и все работало нормально.


2

rob
16 Янв 2014 в 20:02

Щелкните правой кнопкой мыши Web.Config => Tab Security => Button Edit => Button Add => Button Advanced => Button Find Now => В результатах поиска выберите свою группу (в нашем случае «IIS_IUSRS») => Ok => Ok => Хорошо


2

Ihor Levkivskyi
5 Окт 2016 в 10:30

Я решил это, добавив разрешение на чтение в папку для пользователя пула приложений (WIN SERVER 2008 R2): C: Windows System32 inetsrv config

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

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


2

ludens
19 Янв 2017 в 12:36

Приведенные выше ответы были полезны, но в случае, если это кому-то поможет — у меня была именно эта проблема, и оказалось, что я (сеть Windows) использовал корневую папку, из которой размещался сайт. Мы убили общий ресурс и добавили разрешение пользователей на чтение / выполнение, и он снова заработал нормально.

Я подозреваю, что акция все испортила.


2

Michael
12 Фев 2020 в 23:35

Я также получал сообщение «Не могу прочитать файл конфигурации из-за недостаточных разрешений». Оказывается, ограничения ISAPI и CGI в IIS для 32-разрядной и 64-разрядной версии ASP.NET 4.0 были запрещены. Пометка их обоих как разрешенных устранила мою проблему.


1

Earl
24 Окт 2014 в 00:53

Была эта проблема с виртуальным приложением. Все разрешения были выставлены. IIS_IUSRS, AppPoolIdentity, а затем предоставил полный доступ всем. Ничего не получилось. Перезапущен пул приложений, сайт и IIS, но нет.

Удалил виртуальное приложение и снова добавил с нуля, и оно начало работать.

Хотел бы я знать, что это решило.


0

gbs
26 Июн 2015 в 08:52

Проверьте, не помечен ли файл как только для чтения , несмотря на разрешение IIS_IUSRS, он будет отображать то же сообщение.


0

Syed Umar Ahmed
10 Июл 2015 в 15:21

У меня было это сообщение об ошибке, которое оказалось из-за того, что моя физическая папка была расположена на сетевом диске, а не на локальном. Кажется, разрешения на таких дисках по умолчанию могут быть разными. Например, в то время как расположение локального диска давало разрешение пользователям локального компьютера, расположение в сети — нет.

Далее, принятый ответ в таком случае не работает. Локальные пользователи или пользователи IIS не были доступны для назначения разрешений. Решением было переместить физическую папку на локальный диск.


0

Kat
16 Сен 2015 в 18:23

У меня была такая же проблема, и после того, как я выполнил все, что написано здесь в качестве ответов, она все еще воспроизводится. Вторая половина проблемы заключалась в том, что .NET был отключен в разделе «Включение или отключение компонентов Windows».


0

Bogdan Mates
14 Июл 2016 в 10:33

Иногда, если это новый сервер, вам нужно настроить или установить функцию ASP.NET в IIS, чтобы он мог читать ваш файл web.config.

В моем случае это было причиной.


0

SanthoshM
28 Окт 2016 в 18:50

В моем случае я пытался разместить страницы с подключенного диска (subst). Проблема в том, что подстановка была запущена под моей учетной записью, и пользователь IIS не может видеть тот же диск.


0

Dinesh Rajan
2 Мар 2017 в 05:56

Это может произойти, если ваше приложение находится в виртуальном каталоге, а путь к файлам — это подключенный диск.

Если вы измените путь к файлам на локальном диске, это решит проблему, если это действительно ваша проблема.


2

UKcentric
4 Янв 2019 в 18:17

Logo_1c_8В данной статье я подробно опишу процесс организации веб- доступа к базам данных «1С:Предприятие» 8.3 на веб-сервере IIS (Internet Information Server), входящего в поставку Microsoft Windows Server. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен. Будет рассмотрен алгоритм настройки IIS для работы «1С:Предприятие», а также описан процесс публикации баз данных на веб-сервере как для 32-разрядного, так и для 64-разрядного модуля расширения веб-сервера.

0. Оглавление

  1. Что понадобится
  2. Установка веб-сервера IIS
  3. Установка компонент «1С:Предприятие»
  4. Настройка операционной системы
  5. Публикация базы данных на веб-сервере
  6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
  7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
  8. Подключение к опубликованной информационной базе через веб-браузер
  9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
  10. Конфигурационные файлы виртуального каталога
    1. Файл default.vrd
    2. Файл web.config

1. Что понадобится

  1. Компьютер отвечающий минимальным системным требованиям для работы веб-сервера под управлением одной из операционных систем:
    • Microsoft Windows Server 2012 (R2)
    • Microsoft Windows Server 2008 (R2)
  2. Права локального администратора на данном компьютере.
  3. Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен.

2. Установка веб-сервера IIS

Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:

  • Общие функции HTTP (Common HTTP Features)
    • Статическое содержимое (Static Content)
    • Документ по умолчанию (Default Document)
    • Обзор каталогов (Directory Browsing)
    • Ошибки HTTP (HTTP Errors)
  • Разработка приложений (Application Development)
    • ASP
    • ASP.NET 3.5
    • Расширяемость .NET 3.5 (.NET Extensibility 3.5)
    • Расширения ISAPI (ISAPI Extensions)
    • Фильтры ISAPI (ISAPI Filters)
  • Исправление и диагностика (Health and Diagnostics)
    • Ведение журнала HTTP (HTTP Logging)
    • Монитор запросов (Request Monitor)
  • Средства управления (Management Tools)
    • Консоль управления IIS (IIS Management Console)

Подробно про процесс развертывания веб-сервера IIS я писал:

  • В Microsoft Windows Server 2012 (R2) — здесь. IIS версии 8, после установки должны увидеть страницу Default Web Site вида:

Ustanovka_IIS_8_Winsdows_Server_2012_13

  • В Microsoft Windows Server 2008 (R2) — здесь. IIS версии 7, после установки должны увидеть страницу Default Web Site вида:

605

3. Установка компонент «1С:Предприятие»

На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты:

  • 1С:Предприятие
  • Модули расширения веб-сервера

publikaciya_bd_na_web_server_IIS_23

Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:

  • Модуль расширения веб-сервера

publikaciya_bd_na_web_server_IIS_31

4. Настройка операционной системы

Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию C:inetpubwwwroot ) необходимо дать полные права группе «Пользователи» (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства» (Properties).

publikaciya_bd_na_web_server_IIS_01

В открывшемся окне свойств, переходим на вкладку «Безопасность» (Security) и нажимаем кнопку «Изменить» (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи» (Users) и в списке разрешений для выбранной группы установим флаг «Польный доступ» (Full control). Затем нажмем «Применить» (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК».

publikaciya_bd_na_web_server_IIS_02

Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию C:Program Files (x86)1cv8 для 32-разрядного модуля расширения и C:Program Files1cv8 для 64-разрядного) группе IIS_IUSRS. Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того чтобы необходимая группа появилась в списке «Группы или пользователи» (Groups or user names) необходимо нажать расположенную под списком кнопку «Добавить» (Add..), а в окне выбора групп или пользователей нажать «Дополнительно» (Advanced…).

publikaciya_bd_na_web_server_IIS_03

Затем нажимаем расположенную справа кнопку «Поиск» (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК».

publikaciya_bd_na_web_server_IIS_04

Группа IIS_IUSRS появится в списке групп или пользователей. Даем ей полные права на на выбранную директорию и нажимаем  «Применить» (Apply) для сохранения изменений.

publikaciya_bd_na_web_server_IIS_05

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

publikaciya_bd_na_web_server_IIS_06

5. Публикация базы данных на веб-сервере

Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать.  Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»

publikaciya_bd_na_web_server_IIS_07

Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:

  • Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
  • Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
  • Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
  • Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
  • Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.

Выбрав необходимые настройки публикации нажимаем «Опубликовать».

publikaciya_bd_na_web_server_IIS_08

Если публикация прошла без ошибок, увидим соответствующее сообщение.

Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool — без настройки работает только с 64-разрядными приложениями. Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже

6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера

Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).

publikaciya_bd_na_web_server_IIS_10

Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений» (Application Pools).

publikaciya_bd_na_web_server_IIS_11

В списке пулов приложений найдем пул с именем DefaultAppPool. Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры» (Advanced Settings).

publikaciya_bd_na_web_server_IIS_12

В открывшемся окне параметров пула приложения, в группе «Общие» (General) найдем пункт «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение параметра равным True. Затем сохраним изменения нажав «ОК».

publikaciya_bd_na_web_server_IIS_13

7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера

Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin, каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.

Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).

publikaciya_bd_na_web_server_IIS_10

Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов. Для этого откроем страницу настройки сопоставления обработчиков для данного виртуально каталога, выбрав пункт «Сопоставление обработчиков» (Handler Mappings) на начальной странице приложения.

publikaciya_bd_na_web_server_IIS_19

В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.

publikaciya_bd_na_web_server_IIS_32

Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:Program Files (x86)1cv88.3.4.389binwsisapi.dll» на «C:Program Files1cv88.3.4.389binwsisapi.dll» воспользовавшись кнопкой выбора. Изменив путь нажимаем «ОК» для сохранения изменений.

publikaciya_bd_na_web_server_IIS_33

8. Подключение к опубликованной информационной базе через веб-браузер

Ну вот вроде и все. Для подключений к только что опубликованной базе данных, запускаем Internet Explorer, и в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы>. В данном примере это http://localhost/DemoAccounting/.

publikaciya_bd_na_web_server_IIS_14

К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80, по внешнему) IP-адресу.

В этом случае, для корректной работы «1С:Предприятие», имя домена, на который идет обращение (или IP-адрес) должен быть добавлен в надежные узлы Internet Explorer, а также для него должны быть разрешены всплывающие окна. Подробнее про настройку Internet Explorer для работы веб-клиента «1С:Предприятие» читайте здесь.

dobavlenie-veb-sajta-v-spisok-nadezhnyx-uzlov-ie_09

9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»

К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить» для добавления информационной базы.

publikaciya_bd_na_web_server_IIS_24

В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы» и нажмем «Далее».

publikaciya_bd_na_web_server_IIS_25

Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере» и нажмем «Далее».

publikaciya_bd_na_web_server_IIS_26

Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее».

publikaciya_bd_na_web_server_IIS_27

Указываем параметры запуска для информационной базы и нажимаем «Готово» для завершения работы мастера.

publikaciya_bd_na_web_server_IIS_28

После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие».  Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие» для подключения к информационной базе.

publikaciya_bd_na_web_server_IIS_30

publikaciya_bd_na_web_server_IIS_29

10. Конфигурационные файлы виртуального каталога

Рассмотрим подробнее структуру файлов, которые были созданы в процессе публикации. Если веб-доступ к опубликованной информационной базе по каким-то причинам не заработал, конфигурационные файлы можно отредактировать вручную, для достижения желаемого результата (конфигурационные файлы из данной статьи для 64-разрядного модуля расширения веб-сервера можно скачать здесь).

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

  • default.vrd
  • web.config

publikaciya_bd_na_web_server_IIS_15

Оба файла доступны для просмотра и редактирования с помощью любого текстового редактора, например программы «Блокнот» (Notepad). Рассмотрим структуру этих файлов подробнее.

10.1. Файл default.vrd

В файле default.vrd описываются опубликованные Web-сервисы (элемент <ws>), а также указывается имя виртуального приложения (атрибут base) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib). В данном примере для файловой информационной базы, строка подключения будет следующей:

ib="File=&quot;C:1C_BASEDemoAccounting&quot;;"

Как видно из примера, если в строке подключения встречаются символы, недопустимые с точки зрения стандарта XML (http://www.w3.org/TR/xml11/), они должны быть заменены соответствующим образом.

publikaciya_bd_na_web_server_IIS_16

В строке подключения можно указать логин и пароль пользователя. В этом случае, подключение к информационной базе будет выполняться от имени указанного пользователя. Например, для подключения от имени пользователя Продавец, строка подключения будет следующей:

ib="File=&quot;C:1C_BASEDemoAccounting&quot;;Usr=Продавец;Pwd=123;"

Для серверной информационной базы строка подключения будет иметь вид:

ib="Srvr=&quot;WIN2012&quote;;Ref=&quote;Accounting&quote;;"

Где WIN2012 — имя кластера серверов «1С:Предприятие», а Accounting — имя базы данных в кластере.

publikaciya_bd_na_web_server_IIS_17

Подробнее про структуру данного файла можно почитать в книге «Руководство администратора» 2-е издание , Приложение 2, глава 3.12.

10.2. Файл web.config

Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config, находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением. В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll, расположенной в каталоге bin, каталога с файлами «1С:Предприятие». В случае использования серверных информационных баз, версия библиотеки должна соответствовать версии кластера серверов «1С:Предприятия».

publikaciya_bd_na_web_server_IIS_18

Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков» (Handler Mappings).

publikaciya_bd_na_web_server_IIS_19

В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия» (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками» (Add Wildcard Script Map…).

publikaciya_bd_na_web_server_IIS_20

При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll. Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить…» (Edit…) в окне списка действий.

publikaciya_bd_na_web_server_IIS_21

Необходимо также убедиться, что для обработчика стоит флаг «Выполнение» (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции…» (Edit Feature Permissions…) в окне «Действия» (Actions).

publikaciya_bd_na_web_server_IIS_22

С вашим веб-сайтом нет проблем с . Ваш веб-сайт работает в процессе. В iis вы можете определить личность этого процесса. идентификатор, который использует ваш веб-сайт пул приложений, как (сетевые службы, локальная система и т.д.), Должен иметь разрешение на доступ и чтение файла web.config.

Update:

Этот обновленный ответ аналогичен приведенному выше, но немного длиннее, проще и улучшен.

Прежде всего: вам не нужно ничего менять в конфигурационном файле. В порядке. Проблема заключается в разрешении файлов Windows.

Эти проблемы возникают из-за того, что ваше приложение не может получать доступ и читать файл web.config.

Сделайте файл доступным для группы IIS_IUSRS. Просто щелкните правой кнопкой мыши web.config и нажмите свойства, под вкладкой безопасность добавьте IIS_IUSRS.

Итак, что это за IIS_IUSRS?

Ваш веб-сайт , например, exe. Как и любой exe файл, он должен быть запущен пользователем, и он запускает в соответствии с разрешениями, назначенными этому пользователю.

Когда ваш сайт запущен в IIS, Пул приложений вашего веб-сайта связан с пользователем (сетевые службы, локальная система, И т.д….) (и может быть изменен в IIS)

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

И как @Seph, упомянутый в комментарии ниже. Если ваш компьютер находится в домене, помните, что группа IIS_IUSRS — это локальная группа.
Также убедитесь, что когда вы пытаетесь найти этого пользователя, проверьте местоположение, на котором он должен быть установлен на локальный компьютер, а не на корпоративный домен.

здесь нет проблем с вашей сети.конфигурации. Ваш веб-сайт работает в рамках процесса. В iis можно определить идентификатор этого процесса. Элемент identity это, ваш веб-сайт приложение бассейн работает как (Сетевые Службы, Локальная Система и т. д. …), должны иметь разрешение на доступ и чтение интернета.конфигурационный файл.

обновление:

этот обновленный ответ, такой же, как и выше, но немного дольше, проще и лучше.

в первую очередь: вам не нужно ничего менять в вашем конфигурационном файле. все в порядке. Проблема заключается в права доступа к файлам windows.

эта проблема возникает потому, что приложения не может access и веб-читал.конфигурации.

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

Так что же это за штука IIS_IUSRS?

код web site и как exe. Как и любой EXE-файл, он должен быть!—1— > запускается пользователем и работает согласно разрешения назначенные этому пользователю.

когда ваш сайт запускается в IIS,приложения Бассейн веб-сайт (Сетевые Службы, Локальная Система и т. д. …) (и может быть изменен в IIS)

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

и @Seph упомянутые в комментарий ниже:если ваш компьютер находится в домене, помните, что группу iis_iusrs группа локальная группа.
Также убедитесь, что при попытке найти этого пользователя проверьте расположение он должен быть установлен на локальный компьютер, а не корпоративный домен.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка доступа к файлу сбиспараметры xml
  • Ошибка доступа к файлу проверьте запущенные процессы epic games is mf03 5