2013-06-19 2 views
0

IIS 7에서 ASP.NET MVC 3 응용 프로그램의 동작이 잘못되었습니다. 코드에서 스택 오버플로가 발생하여 일반 응용 프로그램 풀이 다운되었습니다 올바른 System.StackOverflowException없이을 던지고 있습니다. 따라서 문제가있는 기능을 실행하기 시작한 후 w3wp.exe는 기본 코드 예외으로 중단됩니다.IIS에서 스택 오버플로 (처리되지 않음)에 충돌 - Microsoft .NET 4.5 ASP.NET MVC 3

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2 
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec4aa8e 
Exception code: 0xc00000fd 
Fault offset: 0x0000000000055d7f 
Faulting process id: 0x1a6c 
Faulting application start time: 0x01ce6c67c7179807 
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll 
Report Id: 0dd50093-d85b-11e2-9ee7-50e549e13906 

다른 하나 :

Fault bucket , type 0 
Event Name: APPCRASH 
Response: Not available 
Cab Id: 0 

Problem signature: 
P1: w3wp.exe 
P2: 7.5.7601.17514 
P3: 4ce7afa2 
P4: ntdll.dll 
P5: 6.1.7601.17725 
P6: 4ec4aa8e 
P7: c00000fd 
P8: 0000000000055d7f 
P9: 
P10: 

내 질문 여기

public static string Avatar(this UrlHelper helper, string fileName) 
    { 
     return helper.UserAvatar(fileName); 
    } 

public static string UserAvatar(this UrlHelper helper, string fileName) 
    { 
     if (string.IsNullOrEmpty(fileName)) 
      return EmptyPhotoImage(helper); 

     var photoPath = System.Web.Hosting.HostingEnvironment.MapPath(string.Format("~/Content/avatars/{0}", fileName)); 
     if (!File.Exists(photoPath)) 
      return EmptyPhotoImage(helper); 

     return Avatar(helper, fileName); 

    } 

이벤트 로그 기록이다 : - (고정 지금은) 여기

는 Html 헬퍼 확장의 코드 왜 StackOverflowException없이 풀 크래시가 발생합니까?

답변

1

재귀 적 무한 호출이 발생하기 때문입니다.

Avatar는 특정 조건이 충족되면 Avatar를 호출하는 UserAvatar를 호출합니다 (예 : 디스크에 파일이없는 경우).

따라서 StackOverflowException은 응용 프로그램을 계속 실행하지 못하도록합니다. 그 이유는 네이티브 예외가 발생했기 때문입니다 (CLAS 이후에 발생한 것입니다. 이벤트 0xc00000fd는 StacokOverflowException입니다)