web-dev-qa-db-ja.com

applicationHost.configエラー:IIS共有構成でのアクセス許可が不十分なため、構成ファイルを書き込めません

_Microsoft.Web.Administration.ServerManager_クラスを使用して、WindowsサービスのWebサイトを管理しています。

コードで偽装を使用しています。管理者ユーザーの場合、ユーザーは_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エラー:権限が不十分なため、構成ファイルを書き込めません

私のセットアップはWindows2008 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.
_
13
Cédric Boivin

Dcomプロパティオブジェクトのロックを解除するには、2つの手順で実行できます。

ステップ1-「Ahadmin.dll」で「フルコントロール」を付与します。

  • IISサーバーに移動し、フォルダー 'c:\ windows\system32 \'を参照します
  • 「Ahadmin.dll」を見つけて右クリックし、プロパティボックスを開きます
  • [セキュリティ]タブに移動し、NTユーザーに[フルコントロール]を付与します
  • 「フルコントロール」を付与できない場合は、「所有者」タブに移動し、メンバーであるNTユーザーまたは管理者グループを追加して「適用」をクリックし、「セキュリティ」タブに戻って付与します。あなた 'フルコントロール'

ステップ2-レジストリキーに「フルコントロール」を付与します。

  • IISサーバーで「レジストリエディタ」を開きます(コマンドを実行:regedit)。
  • 左ペインのルートにカーソルを置きます。
  • 検索ボックスを開き、「ahadmin」と入力して[検索]をクリックします。
  • レジストリは右ペインにキーを見つけます。このキーの親フォルダを右クリックして、プロパティボックスを開きます
  • [セキュリティ]タブに移動し、NTユーザーに[フルコントロール]を付与します
  • 「フルコントロール」を付与できない場合は、「所有者」タブに移動し、メンバーであるNTユーザーまたは管理者グループを追加して「適用」をクリックし、「セキュリティ」タブに戻って付与します。あなた 'フルコントロール'

    これで、dcomプロパティオブジェクトを編集できます

    Dcom porpertiesオブジェクトがまだロックされている場合は、数分待ってから再試行してください。

    その後、手順 ここ に従う必要があります。

8
Nico

この場合、サーバーディスクがいっぱいでした。ディスク容量を追加すると、問題は解決します。

22
Murat

ソリューションから既存のapplicationhost.configファイルを削除し、ソリューションを再度リロードしました。ソリューションは、新しいApplicationHost.configファイル自体を作成しました。

それは私の問題を解決しました。

14
Avinash Singh

プロジェクトのあるフォルダーが暗号化されていないことを確認してください。 Visual Studioには、暗号化されたフォルダーの操作に問題があります。

ユーザーフォルダを暗号化していますが、これらのフォルダを暗号化されていないものとしてマークするまでプロジェクトは開きません。 VSがプロジェクトフォルダから暗号化を削除する必要があることを示す意味のあるエラーを提供しないのはばかげています。

暗号化を削除するには、プロジェクトフォルダを右クリックし、[詳細]を選択して、[暗号化]チェックボックスをオフにします。フォルダー自体と、ネストされたすべてのフォルダーおよびファイルに変更を適用します。

Disable encryption

2
Ivan Nikitin

ファイルのセキュリティ設定とshare'sセキュリティ設定の両方で、偽装ユーザーがファイルを変更できることを確認してください。 UNCパスを使用して構成ファイルにアクセスしているため、両方のレベルでアクセス許可が必要です。

1
Jacob

仮想ディレクトリが共有フォルダにマップされている場合。共有のアクセス許可を確認します。デフォルトでは、Windows 7/w2k8共有は、Everyone(読み取り)で作成されます。共有のアクセス許可を次のように変更します:Everyone(FullControl)

これにより、IISは、完全な物理パスを使用していないため、共有を通じて必要な処理を実行できます。

0
Colm Guest