2012-04-19 18 views
1

私のアプリケーションの一部で深刻な問題を抱えています。これは中規模の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を投げることができるかどうかです。

誰もそのアプリケーションで同様の問題があったのですか?誰かが私にこのようなことが起こっている理由を説明することができますか?

+0

例外が発生したときに何らかのログを書き込もうとしていますか?もしそうなら、それはログフォルダのwindows権限に問題があるかもしれません。 – Habib

+0

いいえ、そうではありません。私が説明で述べたように、メソッドは何もしませんが、新しいGUIDを返す場合でも例外がスローされます。これ以上何もない。 – Pako

+0

WebPages v1.0を手動で(C:¥Program Files(x86)¥Microsoft ASP.NET¥ASP.NET Web Pages¥v1.0の適切なフォルダにコピーすることによって)インストールするのと同じ例外が発生しました。 'をGACに挿入する)。私のプロジェクトは単純にすべてのバージョンのIISをクラッシュさせ始めました...私はこれをしました。明らかに、この事をインストールするインストーラーはまだありません:( – user2173353

答えて

1

エラーは神秘的に現れ、コードが少し変更された後も不思議に見えなくなりました(これはコードが何をどのようにしていたかを変更しませんでした)。私のチームや他の開発者に、私が問題を示した人は、彼らが見たものを信じることができませんでした。

宇宙にまだまだ魔法が少しあるようです...

関連する問題