我的应用程序的一部分在过去几天中遇到了一些严重问题。它是一个中等大小的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)
这似乎很奇怪,我。然后我删除了这个方法调用,并突然应用程序开始正常工作(但没有按照我的意愿处理错误)。事情是 - 完全相同的代码工作多年,它没有改变一点,并停止在一些机器上工作。
更让人好奇的是:如何像上面解释的简单方法调用,它只返回简单的GUID,可以抛出AccessViolation
?
有没有人有与他们的应用程序类似的问题?有人可以向我解释为什么会发生这样的事情吗?
你是否试图在发生异常时写某种日志?如果是这样,它可能是一个与日志文件夹的Windows权限问题 – Habib 2012-04-19 18:09:36
不,这不是,我已经检查过。就像我在描述中提到的那样:即使这个方法什么都不做,只是返回新的guid而引发异常。而已。 – Pako 2012-04-19 18:15:07
我试图手动“安装”WebPages v1.0(通过将它们复制到'C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0相应的文件夹中, '并将它们插入GAC)。我的项目简单地开始崩溃所有版本的IIS ...我这样做,显然,现在没有安装程序来安装这个东西...... :( – user2173353 2015-12-11 13:54:20