私のアプリケーションの一部で深刻な問題を抱えています。これは中規模のASP.NETアプリケーションです。エラーを処理するいくつかのコードがあります(それらをデータベースに記録し、エラーページをユーザーに表示します)。しかし、最近、このコードは一部のマシンでは正常に動作しなくなりました(すべてではありません)。メソッドに入るときにアクセス違反例外が発生する
私はErrorViewer
からAccessViolationException
がある知っている:
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17651, time stamp: 0x4e21213c
Exception code: 0xc0000005
Fault offset: 0x000000000000cacd
Faulting process id: 0x1150
Faulting application start time: 0x01cd1e44675765e2
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: c43403ad-8a37-11e1-b256-005056891270
このエラーは毎回アプリケーションがエラーページを表示しようとするとエラービューアに記録されます。しかし、エラーは、msi
インストーラを使用して展開されたアプリケーションでのみ発生し、dllファイルは暗号化されているため、このアプリケーションをデバッグすることはできません。少しのコードを変更する私は、単純なワンライナーに最初のメソッドをリファクタリング:
Public Shared Function HandleException(ByVal exception As System.Exception) As Guid
Return New GUID
End Function
しかし、まだこの方法を入力すると、私には奇妙に思えたこのスタックトレースと例外(DebugDiag 1.2を使用して得られた)
at (Exception)
at MyApp.Business.Utilities.HandleException(Exception exception)
at()
at MyApp.BaseUtilities.ErrorSolution()
at (ErrorPage_errorpage , Object , EventArgs)
at MyApp.ErrorPage_errorpage.Page_Load(Object , EventArgs)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
をthrowed 。次に、このメソッド呼び出しを削除して、アプリケーションが正しく動作するようになりました(ただし、エラーは処理しません)。事は、まったく同じコードが何年も働いていて、ちょっと変わっていないし、一部のマシンで作業をやめただけです。
さらに興味深いのは、単純なGUIDを返す単純なメソッドとしての呼び出しがAccessViolation
を投げることができるかどうかです。
誰もそのアプリケーションで同様の問題があったのですか?誰かが私にこのようなことが起こっている理由を説明することができますか?
例外が発生したときに何らかのログを書き込もうとしていますか?もしそうなら、それはログフォルダのwindows権限に問題があるかもしれません。 – Habib
いいえ、そうではありません。私が説明で述べたように、メソッドは何もしませんが、新しいGUIDを返す場合でも例外がスローされます。これ以上何もない。 – Pako
WebPages v1.0を手動で(C:¥Program Files(x86)¥Microsoft ASP.NET¥ASP.NET Web Pages¥v1.0の適切なフォルダにコピーすることによって)インストールするのと同じ例外が発生しました。 'をGACに挿入する)。私のプロジェクトは単純にすべてのバージョンのIISをクラッシュさせ始めました...私はこれをしました。明らかに、この事をインストールするインストーラーはまだありません:( – user2173353