【问题标题】:applicationHost.config Error: Cannot write configuration file due to insufficient permissions with IIS shared configurationapplicationHost.config 错误:由于 IIS 共享配置的权限不足,无法写入配置文件
【发布时间】:2011-06-29 04:41:02
【问题描述】:

我使用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();           

      }

我找到this solutions,但我的 dcom 属性对象是锁

未处理的异常发生在 你的申请。如果你点击 继续,应用程序将忽略 此错误并尝试继续。如果 单击退出,应用程序将 立即关闭。文件名 \?\UNC[我的 PATH]\applicationHost.config 错误: 由于无法写入配置文件 权限不足

我的设置是 Windows 2008 R2、IIS 7.5、框架 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.

【问题讨论】:

    标签: c# security iis file-permissions windows-server-2008-r2


    【解决方案1】:

    在我们的例子中,服务器磁盘已满。我们增加了额外的磁盘空间,问题就解决了。

    【讨论】:

    • 我们也是这样
    • 这是典型的情况。我已经见过很多次了,因为 IIS 日志文件可以增长得如此之快。特别是如果相关网站是 SharePoint。
    • 这是最可能的原因,所以应该是可以接受的。
    • 感谢您将我的大脑带回现实
    【解决方案2】:

    我已经从我的解决方案中删除了现有的 applicationhost.config 文件并再次重新加载了解决方案。解决方案自己创建了新的 ApplicationHost.config 文件。

    它解决了我的问题。

    【讨论】:

    • 这对我有用。另请注意,错误消息中说明了 applicationhost.config 的位置。
    【解决方案3】:

    要解锁您的 dcom 属性对象,您只需执行 2 个步骤。

    第 1 步 - 授予您对“Ahadmin.dll”的“完全控制权”:

    • 转到您的 IIS 服务器并浏览到文件夹 'c:\windows\system32\'
    • 找到“Ahadmin.dll”并右键单击它以打开属性框
    • 转到“安全”选项卡并授予您的 NT 用户“完全控制”
    • 如果您无法授予您“完全控制权”,请转到“所有者”选项卡 并添加您的 NT 用户或您所属的管理员组,然后单击“应用” 然后返回“安全”标签授予您“完全控制权”

    第 2 步 - 授予您对注册表项的“完全控制权”:

    • 在 IIS 服务器上打开“注册表编辑器”(运行命令:regedit)。
    • 将光标放在左窗格的根目录上。
    • 打开一个查找框并输入“ahadmin”并单击查找。
    • 注册表将在右窗格中找到一个键。右键单击父级 此键的文件夹并打开属性框
    • 转到“安全”选项卡并授予您的 NT 用户“完全控制”
    • 如果您无法授予您“完全控制权”,请转到“所有者”标签 并添加您的 NT 用户或您所属的管理员组,然后单击“应用” 然后返回“安全”选项卡授予您“完全控制权”

      您现在可以编辑您的 dcom 属性对象

      如果 dcom 端口对象仍处于锁定状态,请稍等几分钟再试一次。

      之后,您只需按照程序here

    【讨论】:

    • 这对我有用 - 奇怪的是 WCF 自动启动 在应用属性时抱怨。错误:“保存配置时发生错误。查看详细信息以获取更多信息。关闭此对话框后可以重新应用更改。文件名:\\?\C:\Windows\system32\inetsrv\c...\ applicationHost.config 错误:无法写入配置文件”
    【解决方案4】:

    确保包含项目的文件夹未加密。 Visual Studio 在处理加密文件夹时遇到问题。

    我的用户文件夹已加密,在我将这些文件夹标记为未加密之前,项目不会打开。 VS 没有提供有意义的错误说明您应该从项目文件夹中删除加密,这很愚蠢。

    要删除加密,请右键单击项目文件夹,然后单击“高级”,然后取消选中“加密”复选框。将更改应用到文件夹本身以及所有嵌套的文件夹和文件。

    【讨论】:

      【解决方案5】:

      确保文件的安全设置和共享的安全设置都允许模拟用户修改文件。由于您使用 UNC 路径访问配置文件,因此您需要两个级别的权限。

      【讨论】:

      • 沿着这些线,检查文件的有效权限(例如右键单击、属性、安全性、高级、有效权限)。这应该为您提供用户可以在文件系统级别 (NTFS) 执行的操作的权威列表。
      【解决方案6】:

      如果虚拟目录映射到共享文件夹。查看共享的权限,默认情况下在 windows 7/w2k8 下创建共享是: 每个人(阅读)。 将共享的权限更改为: 每个人(完全控制)

      这允许 IIS 通过共享来做它需要做的事情,因为它没有使用完整的物理路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 2017-01-21
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多