IIS 5上のASP.NET 2.0アプリケーションでエラーが発生しました(aspnet_wp.exe(PID:XXXX)が予期せず停止しました。)
-
04-07-2019 - |
質問
Windows 2000サーバー(IIS 5)でASP.NET 2.0 Webアプリケーションをホストした後。 Webサイトを閲覧できませんでした。
次のエラーメッセージがブラウザに表示され、3つのイベントログエントリが追加されました...
ブラウザのエラーメッセージ
サーバーアプリケーションは使用できませんこのWebサーバーでアクセスしようとしているWebアプリケーションは現在使用できません。 [更新]をクリックしてくださいWebブラウザのボタンをクリックして、リクエストを再試行します。
イベントログエントリ
イベントタイプ:エラー
イベントソース:ASP.NET 2.0.50727.0
イベントカテゴリ:なし
イベントID:1000
日付:2008年10月24日
時間:午後3:45:26
ユーザー:なし
コンピューター:XXXXX
説明:aspnet_wp.exe(PID:XXXX)が突然停止しました。イベントタイプ:エラー
イベントソース:ASP.NET 2.0.50727.0
イベントカテゴリ:なし
イベントID:1088
日付:2008年10月24日
時間:午後3:45:26
ユーザー:なし
コンピューター:XXXXX
説明:App-Domainを作成できなかったため、リクエストの実行に失敗しました。エラー:0x80070005アクセスが拒否されました。
イベントタイプ:警告
イベントソース:ASP.NET 2.0.50727.0
イベントカテゴリ:なし
イベントID:1073
日付:2008年10月24日
時間:午後3:45:26
ユーザー:なし
コンピューター:WEBDEV
説明:AppDomain:/ LM / W3SVC / 1 / Root / WebApplicationName
の初期化に失敗しました 例外:System.IO.FileLoadException
メッセージ:ファイルまたはアセンブリ「System.Web、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。アクセスが拒否されました。 StackTrace:System.Reflection.Assembly.nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、Assembly locationHint、StackCrawlMark& stackMark、Boolean throwOnFileNotFound、Boolean forIntrospection)
System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef、Evidence assemblySecurity、StackCrawlMark& stackMark、Boolean forIntrospection)で
System.Reflection.Assembly.InternalLoad(String assemblyString、Evidence assemblySecurity、StackCrawlMark& stackMark、Boolean forIntrospection)
で System.Activator.CreateInstance(String assemblyName、String typeName、Boolean ignoreCase、BindingFlags bindingAttr、Binderバインダー、Object [] args、CultureInfo culture、Object [] activationAttributes、Evidence securityInfo、StackCrawlMark& stackMark)
System.Activator.CreateInstance(String assemblyName、String typeName)
で System.AppDomain.CreateInstance(String assemblyName、String typeName)
System.AppDomain.CreateInstance(String assemblyName、String typeName)
System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId、IApplicationHost appHost、HostingEnvironmentParameters hostingParameters)
System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId、IApplicationHost appHost、HostingEnvironmentParameters hostingParameters)で
任意のアイデア...
**編集**
そしてSystem.WebアセンブリにアクセスするためにSystem.IO.FileLoadExceptionがスローされるのはなぜですか?
解決
Webサイトフォルダーがサーバーにコピーされたとき、管理者、管理者、および&の権限のみを持つ親フォルダーのセキュリティ権限を継承することを発見しました。システムアカウント。
追加しました
- IUSER_MACHINENAME(インターネットゲストアカウント)
- ASPNET(ASP.NETマシンアカウント)
読み取り&実行、フォルダの内容を一覧表示、および読み取りの権限。
問題が解決したにもかかわらず、まだいくつかの質問があります
3番目のイベントログエントリから、ApplicationManagerがSystem.WebアセンブリにあるHostingEnvironmentの作成に失敗したことが明らかです。
FileLoadExceptionはSystem.Webに対してスローされるため、ASP.NETワーカープロセスはGACフォルダーにアクセスできないようです。
System.WebにアクセスするためにFileLoadExceptionがスローされるのはなぜですか?
他のヒント
その外観から、ASP.NETインストールに設定された不正な許可があります。通常、ASP.NET部分をアンインストールして再インストールするのが最善の策です。これは次の方法で簡単に行えます。
- C:\ windows \ microsoft.net \ framework \ v2.0.50727のコマンドプロンプトを開きます
- 次のコマンドを実行します。aspnet_regiis.exe-u
- 次のコマンドを実行します。aspnet_regiis.exe-i
ASP.NETをアンインストールして再インストールすると、アカウントの適切なアクセス許可が確立されます。
このエラーは、IISをクラッシュさせるか、強制的にシャットダウンするコードが例外をスローしたことを意味します。これを引き起こす一般的な例外は、OutOfMemoryExceptionとStackOverflowExceptionです。
FileLoadExceptionが発生していますが、実際には根本的な原因であるOutOfMemoryExceptionまたは類似のものがある可能性があります。何をロードしようとしているか、そしてその中にあるコードを知らないと、実際に問題を引き起こしているものを知ることは不可能です。
しかし、ロードアセンブリの問題を除外するために私が最初に行うことは、テストハーネスでそれを反映し、同じ問題が発生するかどうかを確認することです。その場合、問題はIISでなく、ロードしようとしているDLLにあります。
同じ問題が発生し、aspnet_regiisで-uおよび-iを使用して消えることはなく、他の多くのユーザーがこちら。 しかし、“%windir%\ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files”を削除した後フォルダーを作成し、web.configのID偽装セクションからユーザーにこのフォルダーに読み取り/書き込み権限を付与すると、問題はなくなりました。ローカルASPNETユーザーにそれらの権利を与えるだけでは不十分でした。