_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.
_
Dcomプロパティオブジェクトのロックを解除するには、2つの手順で実行できます。
ステップ1-「Ahadmin.dll」で「フルコントロール」を付与します。
ステップ2-レジストリキーに「フルコントロール」を付与します。
「フルコントロール」を付与できない場合は、「所有者」タブに移動し、メンバーであるNTユーザーまたは管理者グループを追加して「適用」をクリックし、「セキュリティ」タブに戻って付与します。あなた 'フルコントロール'
これで、dcomプロパティオブジェクトを編集できます
Dcom porpertiesオブジェクトがまだロックされている場合は、数分待ってから再試行してください。
その後、手順 ここ に従う必要があります。
この場合、サーバーディスクがいっぱいでした。ディスク容量を追加すると、問題は解決します。
ソリューションから既存のapplicationhost.configファイルを削除し、ソリューションを再度リロードしました。ソリューションは、新しいApplicationHost.configファイル自体を作成しました。
それは私の問題を解決しました。
プロジェクトのあるフォルダーが暗号化されていないことを確認してください。 Visual Studioには、暗号化されたフォルダーの操作に問題があります。
ユーザーフォルダを暗号化していますが、これらのフォルダを暗号化されていないものとしてマークするまでプロジェクトは開きません。 VSがプロジェクトフォルダから暗号化を削除する必要があることを示す意味のあるエラーを提供しないのはばかげています。
暗号化を削除するには、プロジェクトフォルダを右クリックし、[詳細]を選択して、[暗号化]チェックボックスをオフにします。フォルダー自体と、ネストされたすべてのフォルダーおよびファイルに変更を適用します。
ファイルのセキュリティ設定とshare'sセキュリティ設定の両方で、偽装ユーザーがファイルを変更できることを確認してください。 UNCパスを使用して構成ファイルにアクセスしているため、両方のレベルでアクセス許可が必要です。
仮想ディレクトリが共有フォルダにマップされている場合。共有のアクセス許可を確認します。デフォルトでは、Windows 7/w2k8共有は、Everyone(読み取り)で作成されます。共有のアクセス許可を次のように変更します:Everyone(FullControl)
これにより、IISは、完全な物理パスを使用していないため、共有を通じて必要な処理を実行できます。