2017-03-24 1 views
1

IIS 8.5 (Windows Server 2012 R2)에서 실행되는 ASP.Net MVC 응용 프로그램이 있습니다. 가끔 (하루에 한 번) AccessViolationException 및 StackTrace없이 충돌합니다.IIS (w3wp.exe)에서 AccessViolationException이 발생했습니다.

은 EventLog 짧은 정보 :

<Event 
xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
    <Provider Name="Windows Error Reporting" /> 
    <EventID Qualifiers="0">1001</EventID> 
    <Level>4</Level> 
    <Task>0</Task> 
    <Keywords>0x80000000000000</Keywords> 
    <TimeCreated SystemTime="2017-03-23T07:34:19.000000000Z" /> 
    <EventRecordID>5204</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>WebKassaApp01</Computer> 
    <Security /> 
</System> 
<EventData> 
    <Data /> 
    <Data>0</Data> 
    <Data>CLR20r3</Data> 
    <Data>Нет данных</Data> 
    <Data>0</Data> 
    <Data>w3wp.exe</Data> 
    <Data>8.5.9600.16384</Data> 
    <Data>5215df96</Data> 
    <Data>System.Core</Data> 
    <Data>4.0.30319.33440</Data> 
    <Data>5200436c</Data> 
    <Data>3a4</Data> 
    <Data>54</Data> 
    <Data>System.AccessViolationException</Data> 
    <Data /> 
    <Data /> 
    <Data>C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_w3wp.exe_9ef793f5de646625877423c14a0d0c91ad3196_9e3fd63b_cb043ca8</Data> 
    <Data /> 
    <Data>0</Data> 
    <Data>1ec4b5d9-0f9b-11e7-80c7-000c29473f66</Data> 
    <Data>4100</Data> 
    <Data /> 
</EventData> 

어제 나는 마이크로 소프트 디버깅 도구 (DebugDiag)를 설치하고 메모리 덤프 파일의 분석 (memory.hdmp)를 실행했다. 그것은 던져 AccessViolationException의 나에게 스택 추적을 보여

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[System.__Canon, mscorlib],[System.Decimal, mscorlib]].MoveNext() 
System.Linq.Enumerable.Sum(System.Collections.Generic.IEnumerable`1) 
System.Linq.Queryable.Sum[[System.__Canon, mscorlib]](System.Linq.IQueryable`1, System.Linq.Expressions.Expression`1>) 
WebCash.Web.WebCashService.ToModel(System.Linq.IQueryable`1) 
WebCash.Web.WebCashService.GetLastReport(Int64, Int64, WebCash.Constants.Enums.ReportTypeEnum, Boolean) 
WebCash.Web.WebCashService.CreateXReport(WebCash.ServiceContracts.Request.XReportRequest) 
WebCash.Common.ParallelHelper.RunInMutex[[System.__Canon, mscorlib]](System.String, System.Func`1) 
WebCash.Web.Controllers.Api.BaseApiController.ExecuteAuthorizedOperation[[System.__Canon, mscorlib]](System.__Canon, System.Func`2) 
DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, System.Object, System.Object[]) 
System.Web.Http.Controllers.ReflectedHttpActionDescriptor+ActionExecutor+<>c__DisplayClass10.b__9(System.Object, System.Object[]) 
System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext, System.Collections.Generic.IDictionary`2, System.Threading.CancellationToken) 
System.Web.Http.Controllers.ApiControllerActionInvoker+d__0.MoveNext() 
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Web.Http.Controllers.ApiControllerActionInvoker+d__0, System.Web.Http]](d__0 ByRef) 
System.Web.Http.Controllers.ApiControllerActionInvoker.InvokeActionAsyncCore(System.Web.Http.Controllers.HttpActionContext, System.Threading.CancellationToken) 
System.Web.Http.Controllers.ActionFilterResult+d__2.MoveNext() 
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Web.Http.Controllers.ActionFilterResult+d__2, System.Web.Http]](d__2 ByRef) 
System.Web.Http.Controllers.ActionFilterResult.ExecuteAsync(System.Threading.CancellationToken) 
System.Web.Http.Dispatcher.HttpControllerDispatcher+d__1.MoveNext() 
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Web.Http.Dispatcher.HttpControllerDispatcher+d__1, System.Web.Http]](d__1 ByRef) 
System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken) 
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken) 
System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken) 
System.Web.Http.HttpServer+d__0.MoveNext() 
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Web.Http.HttpServer+d__0, System.Web.Http]](d__0 ByRef) 
System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken) 
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken) 
System.Web.Http.WebHost.HttpControllerHandler+d__0.MoveNext() 
System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.Web.Http.WebHost.HttpControllerHandler+d__0, System.Web.Http.WebHost]](d__0 ByRef) 
System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(System.Web.HttpContextBase) 
System.Web.TaskAsyncHelper.BeginTask(System.Func`1, System.AsyncCallback, System.Object) 
System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef) 
System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception) 
System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback) 
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext) 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32) 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32) 

Here full memory analysis log file. 을 그래서, 내가 이해할 수있는, 예외는 닷넷 LINQ 구현에서 발생합니다. 누구든지이 오류의 원인과이를 피하는 방법을 이해하는 데 도움이 될 수 있습니까?

내가 OS 업데이트를 설치하려고했지만 예외가 여전히 발생

편집 할 수 있습니다. 그래서 오늘은이 코드 조각을 다시 작성했습니다. 그러나 오늘 오류가 다른 장소에 나타났습니다.

System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean) 
    System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[]) 
    System.Delegate.DynamicInvokeImpl(System.Object[]) 
    NHibernate.Linq.DefaultQueryProvider.ExecuteQuery(NHibernate.Linq.NhLinqExpression, NHibernate.IQuery, NHibernate.Linq.NhLinqExpression) 
    NHibernate.Linq.DefaultQueryProvider.Execute(System.Linq.Expressions.Expression) 
    NHibernate.Linq.DefaultQueryProvider.Execute[[System.Nullable`1[[System.Int64, mscorlib]], mscorlib]](System.Linq.Expressions.Expression) 
    System.Linq.Queryable.SingleOrDefault[[System.Nullable`1[[System.Int64, mscorlib]], mscorlib]](System.Linq.IQueryable`1>) 
    WebCash.DAL.Entities.EntitiesExtensions.HasActiveLicense(WebCash.DAL.Entities.Cashbox) 
+0

서버에서이 문제가 발생하여 업데이트 문제가 발생했습니다. 체크 아웃 이러한 참조 https://support.microsoft.com/en-us/kb/3139544 http://stackoverflow.com/questions/28694502 –

+0

감사합니다! 나는 그것을 시도했지만 예외는 여전히 발생한다. –

답변

1

.Net 프레임 워크 버전을 4.6으로 업데이트하면 문제가 해결되었습니다.

관련 문제