很难跟踪崩溃我的应用程序池的进程

时间:2015-01-23 22:37:53

标签: asp.net .net iis event-viewer

所以我有一个不断崩溃的应用程序,它没有留下任何应用程序日志。当我最终去查看该服务器的事件查看器(服务器2003框)时,我发现了这个错误(偶数源是ASP.NET 4.0.30319.0)

  

发生了未处理的异常,并且该过程已终止。

     

申请ID:/ LM / W3SVC / 2053196604 / Root

     

流程ID:24428

     

异常:System.IO.FileLoadException

     

消息:无法加载文件或程序集   ' Microsoft.Practices.EnterpriseLibrary.Validation,Version = 5.0.505.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

     

StackTrace:服务器堆栈跟踪:at   System.RuntimeTypeHandle.GetTypeByName(String name,Boolean   throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMarkHandle stackMark,Boolean loadTypeFromPartialName,   ObjectHandleOnStack类型)at   System.RuntimeTypeHandle.GetTypeByName(String name,Boolean   throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMark&安培; stackMark,Boolean loadTypeFromPartialName)at   System.RuntimeType.GetType(String typeName,Boolean throwOnError,   Boolean ignoreCase,Boolean reflectionOnly,StackCrawlMark& stackMark)   在System.Type.GetType(String typeName)at   Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity.UnityContainerConfigurator.AddValidationExtension()   在   Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity.UnityContainerConfigurator..ctor(IUnityContainer   容器)   Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.CreateDefaultContainer(IConfigurationSource   configurationSource)at   Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.SetCurrentContainerIfNotSet()   在Microsoft.Practices.EnterpriseLibrary.Logging.Logger.get_Writer()
  在Apriva.WebApi.Shared.Logging.DefaultLogWriter.Log(对象消息,   TraceEventType严重性,LogEntry& entry,String类,HttpContext   上下文)   Apriva.WebApi.Shared.Logging.DefaultLogWriter.Info(对象消息,   字符串类别,HttpContext context)at   System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的   md,Object [] args,Object server,Int32 methodPtr,Boolean   fExecuteInContext,Object []& outArgs)at   System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(即时聊天   msg,IMessageSink replySink)

     

在[0]处重新抛出异常:at   System.Runtime.Remoting.Proxies.RealProxy.EndInvokeHelper(消息   reqMsg,Boolean bProxyCase)at   System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(Object NotUsed,   MessageData&安培; msgData)at   Apriva.WebApi.Shared.Logging.Logger.LogDelegate.EndInvoke(IAsyncResult的   结果)在   Apriva.WebApi.Shared.Logging.Logger.LogAsyncComplete(IAsyncResult ar)   在   System.Runtime.Remoting.Messaging.AsyncResult.SyncProcessMessage(即时聊天   msg)at   System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(即时聊天   msg,IMessageSink replySink)at   System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.DoAsyncCall()
  在   System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(对象   o)at   System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(对象   System.Threading.ExecutionContext.Run(ExecutionContext。)   executionContext,ContextCallback回调,对象状态,布尔值   ignoreSyncCtx)at   System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()   在System.Threading.ThreadPoolWorkQueue.Dispatch()at   System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

     

有关详细信息,请参阅

上的“帮助和支持中心”

当我检查任务管理器中的进程时,该PID不存在。我认为这是因为它是一个w3wp进程。所以我进入命令提示符并运行iisapp.vbs并返回一个具有不同PID的进程。

该错误似乎意味着当找到的版本是v5.0.505.0并且我的项目有大量对企业库的引用时,有一个不同版本的企业库的配置引用用于验证,没有请参阅验证包。

所以我的问题是 - 有没有人对我接下来要去哪里有所了解?我试图使用PID来至少看看哪个应用程序导致了错误,但这似乎并没有让我到任何地方。

1 个答案:

答案 0 :(得分:0)

<强>分析: 从堆栈跟踪清楚,参考链是: Apriva.WebApi.Shared.Logging.DefaultLogWriter =&gt; Microsoft.Practices.EnterpriseLibrary.Logging.Logger =&gt; Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer =&gt; Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity.UnityContainerConfigurator。 方法&#34; AddValidationExtension&#34;类型为Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity.UnityContainerConfigurator需要来自&#39; Microsoft.Practices.EnterpriseLibrary.Validation程序集的签名

可能的步骤找出根本原因:

  1. 在visual studio中打开解决方案。
  2. 转到“修改”菜单 - &gt;查找和替换 - &gt;在文件中查找
  3. 使用查找选项搜索Microsoft.Practices.EnterpriseLibrary.Validation-&gt;查看这些文件类型 - &gt; * .csproj您将获得引用此程序集的项目列表。
  4. 在记事本中打开所有这些项目文件,找出哪个具有与版本= 5.0.505.0不同的程序集签名,Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#39;
  5. 最有可能你应该通过上述步骤得到罪魁祸首。 我还建议检查程序集缓存并检查Microsoft.Practices.EnterpriseLibrary.Validation程序集的签名,如果它与Version = 5.0.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#39;

    匹配