IISで実行されているASP.NET Webサイトと組み合わせて、AppDomainsのシャドウコピー機能に問題があります。問題は、アクセス許可が不十分なために、シャドウコピーされたファイルをIISユーザーが読み取ったり、実行したりできないことです。AppDomainシャドウコピーされたファイルアクセスがIIS6で実行されているASP.NETサイトで拒否されました
新しいアプリケーションドメイン内のコードは、(DoCallBack経由でコールバックメソッドを介して)実行されたとき、私は、次のエラーメッセージが表示されます。
System.IO.FileLoadException:ファイルまたはアセンブリをロードできませんでした「My.Namespace.AssemblyName、バージョン= 0.0.3.2231、Culture =ニュートラル、PublicKeyToken = null 'またはその依存関係の1つ。アクセスは拒否されました。
フュージョンログ:
Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll Running under executable c:\windows\system32\inetsrv\w3wp.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = NT AUTHORITY\NETWORK SERVICE LOG: DisplayName = My.Namespace.AssemblyName, Version=0.0.3.2231, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///C:/Inetpub/wwwroot/Web Suite/Widgets LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: No application configuration file found. LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///C:/Inetpub/wwwroot/Web Suite/Widgets/My.Namespace.AssemblyName.DLL. ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated.
私はすでに行っている:私は許可されている
「のCを:/のinetpub/wwwrootに/ウェブスイート/ウィジェット」フォルダは、ユーザーのネットワークサービスの読み取り許可と実行'
シャドウコピー機能をオフにすると、すべて正常に機能します。
Visual Studio 2008のローカルコンピュータでも、問題なく実行されます。
Widgetsフォルダのすべてのファイル(フォルダ自体ではなく)に読み取り権限と実行権限を与えても問題は解決しません。
私はそれはASP.NETの一時ファイルのフォルダのアクセス許可をしなければならないと思った:
C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ ASP.NETの一時ファイルの\ウェブスイート
このフォルダ内のすべてのサブフォルダとその中のファイルには、ユーザ 'NETWORK SERVICE'の実行許可を読み込み、読み取るために&が読み込まれています。だからそれは問題でもありません。
短くする:
私のサイト(IIS6で実行中)が新しいAppDomainのシャドウコピーされたファイルにアクセスできないのはなぜですか? MachineNameに\アカウント名は、アプリケーションプールのIDです
aspnet_regiis -ga MachineName\AccountName
:
こんにちは。私は同じ問題があります。あなたは最終的に解決策を見つけましたか? –
いいえ、私は最終的に別のAppDomainを使用しないで、代わりに既定のASP.NET AppDomain(シャドウコピー機能を有効にしている)を使用することにしました。このソリューションの唯一の欠点は、プラグインがbinディレクトリになければならないことです。カスタムディレクターではありません。 –