Application_Start가 시작되지 않습니까? 어려움 이 있습니다. 응용 프로그램을 디버깅합니다. 내 Application_Start메소드

ASP.NET MVC (베타) 응용 프로그램을 사용하고 있는데 문제가 있거나 Application_StartGlobal.asax.cs의 메서드가 실제로 실행되지 않는지 알아내는 데 어려움 이 있습니다. 응용 프로그램을 디버깅합니다.

Application_Start메소드 의 줄에 중단 점 을 두었고 응용 프로그램을 디버깅하려고 할 때 중단 점에 도달해야한다고 기대하지만 결코 그렇지 않습니다. IIS를 재설정 한 후가 아니라 재부팅 한 후가 아니라 뭔가 빠졌습니까? 왜이 메소드가 호출되지 않습니까?



답변

IIS에있는 경우 디버거가 연결되기 전에 앱을 시작할 수 있습니다. 그렇다면 연결하기에 충분한 시간 동안 스레드 수면을 취할 수 있는지 잘 모르겠습니다.

Visual Studio에서 디버거를 프로세스에 연결할 수 있습니다. 디버그 >> 프로세스에 첨부를 클릭하여이를 수행하십시오. 브라우저에 연결 한 다음 응용 프로그램을 누르십시오. 안전하게하려면 IIS를 다시 시작하고 사이트를 방문하십시오. 이것이 문제를 해결할 것이라고 100 % 확신하지는 않지만 App_Start에서 스레드 절전을 해제하는 것보다 훨씬 낫습니다.

응용 프로그램 시작 디버깅을 완료 할 때까지 내장 웹 서버에서 다른 옵션이 일시적으로 호스트됩니다.


답변

참고 : 내장 된 “Visual Studio Development Server” 또는 IIS Express 를 사용 하는 좋은 대안 (예 : IIS에 대해 개발 중이고 앱의 올바른 기능에 필요한 특정 설정 이 있기 때문에 )은 IIS에서 계속 실행 상태를 유지하는 것입니다. 사용자 정의 웹 서버 + 호스트 파일 항목 + 동일한 도메인에 대한 IIS 바인딩 사용)

  1. 디버깅 세션이 실행될 때까지 기다립니다.
  2. 그런 다음 루트 web.config를 공백으로 편집하고 파일을 저장하십시오.
  3. 페이지 새로 고침 (Ctrl + F5)

중단 점이 잘 맞아야하며 자연적인 IIS 서식지 에서 계속 디버깅 할 수 있습니다 . 대단해!


답변

다음은 IIS, Cassini 등을 사용하는 경우에 관계없이 다음과 같은 경우에 도움이됩니다.

  1. Application_Start에서 중단 점 설정
  2. 디버깅 시작 (브레이크 포인트가 적중하지 않음)-> 페이지가 브라우저에 표시됩니다
  3. web.config를 변경하고 (예 : 빈 줄 입력) 저장하십시오.
  4. 브라우저에서 페이지를 다시로드하십시오-> 중단 점에 도달했습니다!

왜 이것이 작동합니까? web.config가 변경되면 웹 서버 (IIS, Cassini 등)는 재활용을 수행하지만이 경우 (어떤 이유로 든) 프로세스는 동일하게 유지되므로 디버거 (Visual Studio)를 사용하여 연결 상태를 유지합니다 (Visual Studio ).


답변

IIS 호스팅 응용 프로그램의 application_start에서 중단 점에 문제가 있습니다. 좋은 해결 방법은 Debugger.Break (); VS 중단 점 대신 코드에서


답변

나는 같은 문제가 있습니다. 내 솔루션에서 많은 이름을 바꿨습니다. 그 후 두 가지 웹 응용 프로그램이 작동하지 않고 다른 여러 웹 응용 프로그램이 괜찮 았습니다. 경로가 잘못되었다는 오류가 발생했습니다. Application_Start메서드 에서 중단 점을 설정 한 다음 IIS를 다시 시작 하려고 시도했지만 VS가 실행을 중단하지 않았습니다. 실행 가능한 웹 응용 프로그램으로 나누기가 작동했습니다. 그런 다음 “clean solution”과 “rebuild”는 이름을 바꾼 후에 남은 어셈블리를 삭제하지 않는다는 것을 상기했습니다. 그리고 그것은 해결책이었습니다! bin내 buggy-web-applications의 디렉토리를 수동으로 정리 한 다음 Global.asax Inherits=""속성의 새로운 오류가 오래된 dll을 참조하는 것을 보았습니다 . 나는 그것을 새로운 것으로 바꾸었고 휴식이 시작되었습니다. Global.asax의 이름을 바꾸는 동안 업데이트되지 않았다고 가정 해 봅시다.


답변

다른 벤더가 빌드 한 후 인수 한 프로젝트에서 동일한 문제가 발생했습니다. 문제는 Global.asax.cs에 이전 공급 업체가 작성한 여러 명령이 있었지만 사용 중이라고 생각할 수 있지만 실제로는 완전히 무시되고 있다는 것이 문제였습니다. Global.asax는 상속되지 않았으며 .cs 파일이 있으면이 파일을 쉽게 볼 수 없습니다. Global.asax를 마우스 오른쪽 단추로 클릭하고 마크 업보기를 클릭하여 실제로 확인하십시오.

Global.asax :

<%@ Application Language="C#" %>

다음으로 변경해야합니다.

<%@ Application Codebehind="Global.asax.cs" Inherits="ProjectNamespace.MvcApplication" Language="C#" %>

여기서 ProjectNamespace는 네임 스페이스가 Global.asax.cs 클래스 (일반적으로 프로젝트 이름)의 이름입니다.

우리의 경우 파일에는 많은 인라인 코드가 포함되어 있으며 그중 일부는 .cs 파일에서 복사하여 붙여 넣었습니다. 방금 인라인 코드를 .cs 파일로 덤프하고 변경 사항을 점차 다시 병합했습니다.


답변

앱 풀의 관리 파이프 라인 모드를 “통합”대신 “클래식”으로 전환하십시오. 그것은 나를 위해 문제를 해결했습니다. 지금 이유를 살펴보면 …

(이 답변에 대한 Props는 Flores에게 있습니다 (자신의 답변에 대한 그의 의견 참조), 나는 그것에 더 많은 관심을 끌기 위해 이것을 별도의 답변으로 제공하고 싶었습니다)