2012-04-19 67 views
1

我的应用程序的一部分在过去几天中遇到了一些严重问题。它是一个中等大小的ASP.NET应用程序。有一些处理错误的代码(将它们记录到数据库中并向用户显示错误页面)。但是最近这段代码在某些机器上不能正常工作(不是全部)。当进入方法时访问冲突异常

我知道有来自ErrorViewerAccessViolationException

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

有没有人有与他们的应用程序类似的问题?有人可以向我解释为什么会发生这样的事情吗?

+0

你是否试图在发生异常时写某种日志?如果是这样,它可能是一个与日志文件夹的Windows权限问题 – Habib 2012-04-19 18:09:36

+0

不,这不是,我已经检查过。就像我在描述中提到的那样:即使这个方法什么都不做,只是返回新的guid而引发异常。而已。 – Pako 2012-04-19 18:15:07

+0

我试图手动“安装”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

回答

1

这个错误似乎神秘地出现了,并且在一些细微的代码改变后也神秘地消失了(这并没有改变代码做了什么以及代码的做法)。我的团队或其他开发人员没有人向他们展示这个问题,他们不相信他们看到的东西。

似乎在宇宙中仍然有一点魔力...