source

Global.asax를 디버깅할 수 있습니까?

nicesource 2023. 8. 2. 09:14
반응형

Global.asax를 디버깅할 수 있습니까?

global.asax 파일을 디버그할 수 없습니다!

는 몇개있다니습드코가에 몇 .Application_Start()메서드에서 중단점을 설정하면 무시됩니다!

이게 정상이야?

는 방법한단간에 들어가는 간단한 Application_Start()사용하는 것입니다.System.Diagnostics.Debugger 래스를 시킬 수 . 를 삽입하여 응용프로그램을 강제로 중단할 수 있습니다.System.Diagnostics.Debugger.Break()디버거를 해제할 수 있습니다.

void Application_Start(object sender, EventArgs e) 
{
     System.Diagnostics.Debugger.Break();

     // ...
}
  1. IIS 프로세스에 디버거를 연결합니다.
  2. global.asax 파일을 열고 중단점을 넣습니다.
  3. web.config 파일에 공백을 추가하고 파일을 저장합니다(이로 인해 현재 웹 응용 프로그램이 재설정됨).
  4. 사이트의 웹 페이지를 새로 고치거나 이동합니다.
  5. 디버거가 중단점에서 멈출 때 깜짝 놀라며 지켜봅니다.:)

Application_Start()AppDomain당 한 번씩 호출됩니다.중단점에 도달하지 않은 경우 AppDomain이 이미 생성되었음을 의미하므로 다음을 수행하십시오.

  • 빠른 실행 표시줄에는 VS 웹 서버의 아이콘("로컬 호스트 일부 포트"라고 표시됨)이 있습니다.마우스 오른쪽 단추를 누른 후 "중지" 또는 "닫기"를 선택합니다.이렇게 하면 AppDomain이 중지됩니다.
    • IIS를 사용하는 경우 사이트를 수동으로 다시 시작해야 합니다.
    • 또는 웹 구성 또는 Global.asax 파일을 수정하면 일반적으로 AppDomain을 다시 시작하기에 충분합니다.
  • 디버깅을 다시 시작하십시오. 지금 중단점을 찾아야 합니다.

프로그램이 합니다.<compilation debug="true">web.config) 파일입니다.

VS에서 시작한 개발자의 IIS를 사용하는 경우에는 이를 다시 시작하거나 응용 프로그램을 다시 빌드하면 됩니다.

일반 IIS에 있는 경우 두 가지 옵션이 있습니다.

  1. 웹 사이트가 개발 폴더(VS 웹 프로젝트가 배포된 위치)와 함께 작동하도록 구성된 경우, 첫 번째 요청이 서버에 도달하기 전에 해당 웹 사이트에 대해 설정된 애플리케이션 풀을 다시 시작하고 디버깅을 시작하면 됩니다(디버깅 중에는 항상 앱 풀을 다시 시작할 수 있음).
  2. 다른 폴더 또는 원격 서버에서 작동하는 웹 사이트의 경우 프로세스에 연결해야 합니다.원격 웹 서버 다름)가 하며 를 사용합니다.Debug - Attach to process메뉴에서 컴퓨터 이름을 입력한 다음 디버깅할 프로세스를 선택합니다.일반적으로 관리 모드 유형에서 작동하는 w3wp.exe입니다.

시도해 보는 게 좋을 것 같아요.

  • 작업 표시줄에서 개발 서버 중지
  • 릴리스에서 디버그로 구성 전환

네, 정상입니다.

Application_Start()IIS에 의해 처리됩니다.

하지만 다른 모든 방법들, 예를 들어.Session_Start그리고 다른 모든 것들, 제외.Application_Start()정상적으로 디버깅할 수 있습니다.

수용된 것에 대한 또 다른 대안System.Diagnostics.Debugger.Break();되지요

void Application_Start(object sender, EventArgs e) 
{
   System.Diagnostics.Debugger.Launch();
   //...
}

이는 코드를 깨서는 안 되며 서비스가 다른 권한으로 시작된 경우에도 디버거를 시작해야 합니다.

삭제global.asax새 파일을 추가합니다.내 해결책에는, 다음과 같은 일이 있었습니다.global.asax그리고 aglobal.asax.cs.

모든 메소드(Session_Start,Application_Start...)는 봇 파일에 있었지만, 오직 에 있는 것들만global.asax고려되었습니다.그래서, cs의 중단점과 코드는 아무것도 하지 않습니다.
파일을 재생성한 후에만,global.asax.cs적절한 방법이 있었고 그들은 도망쳤습니다.

디버거가 연결되었을 때 이미 IIS에서 디버그 중단점이 실행되었습니다.그래서 해결책은 공간이 조금 있는 global.asax를 변경하고 파일을 저장하는 것이었습니다.새로 고침 후에 중단점이 표시됩니다.

여기에 있는 솔루션: https://wakeupandcode.com/hitting-breakpoints-in-global-asax/

Application_Start() 함수가 f5를 눌러 즉시 호출될 것으로 예상하지 마십시오.Application_Start()는 애플리케이션에 대한 첫 번째 요청이 발생할 때만 호출됩니다.이상하지만 사실입니다.

모든 답변이 작동하지 않는 경우 다음을 시도합니다.

<compilation debug="true" ... />

web.config. ;)

언급URL : https://stackoverflow.com/questions/1960651/is-it-possible-to-debug-global-asax

반응형