applicationHost.config Ошибка: невозможно записать файл конфигурации из-за недостаточных разрешений в общей конфигурации IIS - PullRequest
12 голосов
/ 17 февраля 2011

Я использую класс Microsoft.Web.Administration.ServerManager для управления веб-сайтом в службе Windows.

Я использую олицетворение в своем коде, с правами администратора, пользователь имеет право изменить мой applicationHost.config, но я всегда получаю следующую ошибку при выполнении .CommitChanges();.

Вот пример моего кода.

  using (ServerManager svr = ServerManager.OpenRemote(args.IISName))
      {           
        Site currentSite = svr.Sites.Where(item => item.Id == args.WebSite.Id).FirstOrDefault();            
        currentSite.Applications[0].VirtualDirectories[0].PhysicalPath = args.WebSite.PhysicalPath;
        svr.CommitChanges();           

      }

Я нахожу это решения , но мой объект свойств dcom заблокирован

Произошло необработанное исключение в вашемприложение.Если вы нажмете «Продолжить», приложение проигнорирует эту ошибку и попытается продолжить.Если вы нажмете «Выйти», приложение будет немедленно закрыто.FileName \? \ UNC [MY PATH] \ applicationHost.config Ошибка: невозможно записать файл конфигурации из-за недостаточных разрешений

Моя установка - Windows 2008 R2, IIS 7.5, framework 3.5, а мой applicationHost.config -в сети SAN

Что я могу попробовать?

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.UnauthorizedAccessException: Filename: \\?\[MY PATH]\applicationHost.config
Error: Cannot write configuration file due to insufficient permissions


   at Microsoft.Web.Administration.Interop.IAppHostWritableAdminManager.CommitChanges()
   at Microsoft.Web.Administration.ConfigurationManager.CommitChanges()
   at Microsoft.Web.Administration.ServerManager.CommitChanges()
   at Nms.IIS.Business.Manager.IISManager70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args)
   at Nms.IIS.Business.Service.IISService70.UpdateWebSiteEntity(UpdateWebSiteEntityArgs args)
   at IISSwitcher.Form1.btnProccess_Click(Object sender, EventArgs e) in C:\Form1.cs:line 70
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4952 (win7RTMGDR.050727-4900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
IISSwitcher
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/IISSwitcher.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Nms.IIS.Business
    Assembly Version: 1.0.295.8874
    Win32 Version: 1.0.295.8874
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.IIS.Business.DLL
----------------------------------------
Nms.Core
    Assembly Version: 1.0.1954.8874
    Win32 Version: 1.0.1954.8874
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Nms.Core.DLL
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.Practices.Unity
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file://[mypatch]/Altitude3%20Transfert/IISDirectorySwitch/Microsoft.Practices.Unity.DLL
----------------------------------------
Microsoft.Practices.Unity.Interception
    Assembly Version: 1.2.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file://Microsoft.Practices.Unity.Interception.DLL
----------------------------------------
Microsoft.Practices.ObjectBuilder2
    Assembly Version: 2.2.0.0
    Win32 Version: 2.2.0.0
    CodeBase: file://Microsoft.Practices.ObjectBuilder2.DLL
----------------------------------------
System.Core
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.30729.4926 built by: NetFXw7
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Nms.Core.resources
    Assembly Version: 1.0.1954.8874
    Win32 Version: 1.0.1954.8874
    CodeBase: file://Nms.Core.resources.DLL
----------------------------------------
Unity_ILEmit_InterfaceProxies
    Assembly Version: 0.0.0.0
    Win32 Version: 1.2.0.0
    CodeBase: file://Microsoft.Practices.Unity.Interception.dll
----------------------------------------
Microsoft.Web.Administration
    Assembly Version: 7.0.0.0
    Win32 Version: 6.1.7600.16385
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Web.Administration/7.0.0.0__31bf3856ad364e35/Microsoft.Web.Administration.dll
----------------------------------------
System.Runtime.Serialization
    Assembly Version: 3.0.0.0
    Win32 Version: 3.0.4506.4926 (NetFXw7.030729-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Serialization/3.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Ответы [ 6 ]

13 голосов
/ 24 января 2017

Я удалил существующий файл applicationhost.config из моего решения и снова загрузил решение. Решение создало новый файл ApplicationHost.config.

Это решило мою проблему.

11 голосов
/ 08 декабря 2014

В нашем случае диск сервера был переполнен.Мы добавили дополнительное дисковое пространство, и проблема решена.

7 голосов
/ 22 февраля 2011

Чтобы разблокировать ваш объект свойств dcom, вам нужно выполнить всего 2 шага.

Шаг 1 - предоставить вам полный доступ к «Ahadmin.dll»:

  • Перейдите на сервер IIS и перейдите в папку «c: \ windows \ system32 \»
  • Найдите «Ahadmin.dll» и щелкните правой кнопкой мыши на нем, чтобы открыть окно свойств
  • Перейдите на вкладку «Безопасность» ипредоставить вашему пользователю NT «Полный контроль»
  • Если вы не можете предоставить вам «Полный контроль», перейдите на вкладку «Владелец» и добавьте своего пользователя NT или группу администраторов, в которой вы участвуете, инажмите «Применить», а затем вернитесь на вкладку «Безопасность», чтобы предоставить вам «Полный контроль»

Шаг 2. Предоставьте вам «Полный доступ» для раздела реестра:

  • На сервере IIS откройте «Редактор реестра» (команда «Выполнить»: regedit).
  • Поместите курсор в корень на левой панели.
  • Откройте поле поиска и введите «ahadmin»и нажмите найти.
  • Реестр найдет ключ в правой панели.Щелкните правой кнопкой мыши на родительской папке этого ключа и откройте окно свойств
  • Перейдите на вкладку «Безопасность» и предоставьте вашему пользователю NT «Полный доступ»
  • Если вы не можетепредоставьте вам «Полный контроль», перейдите на вкладку «Владелец» и добавьте пользователя NT или группу администраторов, в которой вы участвуете, и нажмите «Применить». Затем вернитесь на вкладку «Безопасность», чтобы предоставить вам «Полный контроль»

    Теперь вы можете редактировать свой объект свойств dcom

    Если объект dcom porperties все еще заблокирован, просто подождите несколько минут и попробуйте снова.

    После этого вам просто нужно выполнитьпроцедура здесь .

2 голосов
/ 06 октября 2016

Убедитесь, что папка с проектом НЕ зашифрована. Visual Studio имеет проблемы с работой с зашифрованными папками.

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

Чтобы удалить шифрование, щелкните правой кнопкой мыши папку проекта, затем «Дополнительно» и снимите флажок «Шифрование». Примените изменения к самой папке и ко всем вложенным папкам и файлам.

Disable encryption

1 голос
/ 18 февраля 2011

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

0 голосов
/ 25 сентября 2014

Если виртуальный каталог сопоставлен с общей папкой. Посмотрите на разрешения общего ресурса, по умолчанию под windows 7 / w2k8 общие ресурсы создаются с помощью: Все (читай). Изменение разрешений для общего ресурса: Все (FullControl)

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

...