Application_Start가 시작되지 않습니까?


143

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

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


global.asax 페이지는 메소드가있는 글로벌 클래스에서 상속합니까?

global.asax파일이 단순히 누락 된 경우로 바운스했습니다 . 그래서 그것은 또한 확인 가치가 있습니다 :-)
itsho

답변:


85

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

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

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


21
확장-(VS2010에서 MVC 3 프로젝트 유형 사용) 웹 프로젝트> 속성> 웹 (탭)을 마우스 오른쪽 단추로 클릭하고 "Visual Studio Development Server 사용"라디오 단추가 선택되어 있는지 확인하십시오. 그런 다음 Application_Start 중단 점에 문제가 없습니다.
MemeDeveloper

감사합니다 @MemoDeveloper !! 최고입니다!
Praveen Prajapati 2019

2
Ahhhhhh mannnnnnn, 나는 두 시간을 잃었다. 다시!! 이 답변에 감사드립니다. :)
사무엘

Application_Start () 아래 Global.asax.cs의 Visual Studio에서 중단 점을 설정했는데 실행되지 않는 경우 빌드 유형을 확인하십시오. 릴리스로 실행중인 경우이 중단 점이 실행되지 않을 수 있습니다. 디버그로 전환하면 중지해야합니다.
Paul

171

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

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

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


이것은 훌륭한 AppDomain 재활용 연결입니다. 감사 !!
Sanjay10

더 이상 Visual Studio Development Server가 없습니다. stackoverflow.com/questions/19676527/…
mac10688

1
@ mac10688 true이지만 여전히 "IIS Express"가 있으며 이는 여전히 프로덕션 환경이 아닙니다. 이에 따라 답변을 업데이트했습니다.
MemeDeveloper 2016

확실한 대답. IIS Express Edition을 사용할 때 통신 할 수없는 장치를 IIS로 지정합니다! 이것은 매력을 일으켰습니다.
매트 스켈 돈

54

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

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

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


3
2 년 후 stackoverflow.com/a/7655582/11635의 복제 -주석에서 추가 정보 삭제 및 추가 고려
Ruben Bartelink

실제로 @RubenBartelink, 나는이 답변이 문구와 추가 설명 때문에 다른 답변보다 명확하다고 생각합니다.
Heriberto Lugo

1
@HeribertoLugo 나는 그 점이 멋지다 .- 50 개 공감대가 완전히 동의하지 않는 것은 어렵다. IIS에 디버거를 사용했습니다)!
루벤 Bartelink에게

나는 다른 것을 편집 하고이 것을 제거하는 것이 더 좋은 경로 일 것이라는 데 동의합니다.. 나는 다른 것을 먼저 보았고 약간 벗어 났으므로 작동하지 않았습니다. 더 의미 .. 그게 반 시간은 내가 didnt 한 필요가 잃는 ..
Heriberto 루고

22

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


2
통합 파이프 라인 모드에서 앱 풀을 실행하는 것과 관련하여 중단 점에 도달하지 않는다고 믿습니다. 당신은 그것을 사용하고 있습니까?
Flores

9

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


와우, 그것은 찾기 힘들었다! 팁입니다!
Landon Poch

@Dao 정말이, 감사 굉장하다) 나는이에 시간의 몇 낭비, 나는 :) 전에 답변을 찾을 수 있어야한다
판 카즈 Parkar

7

다른 벤더가 빌드 한 후 인수 한 프로젝트에서 동일한 문제가 발생했습니다. 문제는 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 파일로 덤프하고 변경 사항을 점차 다시 병합했습니다.


그거였다. App start에 예외를 추가했지만 (Pisoner ZERO의 답변에 따라) 전혀 발생하지 않았으므로 디버거와 관련이 없습니다. Global.asax 마크 업을 업데이트하면 문제가 해결되었습니다.
패트릭 보코 비츠

5

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

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


예, 작동합니다. 그러나 애플리케이션이 통합 앱 풀에서 작동해야한다고 가정하면 통합 풀에서도 디버깅해야합니다.
Karel Kral

Classic에서 Integrated로 전환했을 때 "F5"이후에도 응용 프로그램이 중단 점에 도달하지 않았습니다. 왜 그런지 알게 되었습니까? 통합 사용에 대한 요구 사항은 없지만 이러한 이유가 이유없이 작동하지 않는 경우에는 권장하지 않습니다.
CodexArcanum

5

global.asax가 하위 디렉토리에 있지 않은지 확인하십시오. 프로젝트의 루트 수준에 배치해야합니다.


정말 고맙습니다!!! 당신은 나를 미치게 했어요! 이것이 바로 내 문제의 원인이었습니다.
Yann Duran

1
내 문제는 방금이라는 클래스를 만들고 Global.asax.cs작동 할 것으로 예상 했다는 것입니다. 해당 웹 양식 구성 파일로 작성되도록 Add-> New Item->를 사용하여 작성해야 합니다. Global Application ClassGlobal.asax
Levi Fuller

4

global.asax.cs가 무시되는 비슷한 문제가있었습니다.

사이트가 사전 컴파일 된 .NET 2 웹 사이트에서 .NET 4.0 사이트로 업그레이드 된 것으로 나타났습니다. 서버에서 PrecompiledApp.config파일이 루트 폴더에서 삭제되지 않았습니다. 삭제하고 IIS 응용 프로그램 풀을 재활용하고 web.config를 터치하여 응용 프로그램을 다시 시작하면 Global.asax.cs의 코드가 제대로 작동하기 시작했습니다.


3

Global.asax와 Global.asax.cs가 실제로 배포 스크립트에 의해 IIS 폴더에 복사되지 않는 문제가 있었지만 개발 서버에서는 디버깅 할 때 IIS에서는 작동하지 않았습니다.


나는 같은 문제가 있었다. Global.asax를 서버에 업로드 한 후 문제가 해결되었습니다.
Moslem Hady 2016 년

3

늦은 입장 ...

디버거가 연결하기에 충분한 시간을 갖기 전에 IIS 응용 프로그램이 시작되는지 여부를 테스트하려면 GLOBAL.ASAX의 상단 또는 하단에 추가하십시오 Application_Start.

throw new ApplicationException("Yup, it fired");

2

"디버그"라고 말하면 디버깅을 위해 Visual Studio의 기본 제공 웹 서버에서 실제로 응용 프로그램을 시작하거나 IIS의 프로세스에 연결한다는 의미입니까? 전자의 경우 Application_Start를 누르십시오. 그러나 후자의 경우 프로세스를 조기에 포착하기가 어려울 수 있습니다.


맞습니다 .VS에서 앱을 시작한다는 의미입니다. IIS에서 호스팅 했으므로 VS가 해당 프로세스에 연결됩니다. VS가 프로세스에 연결하기 전에 이벤트가 시작된다고 말하고 있습니까?
밥 Yexley 2

2

Visual Studio를 닫고 웹 프로젝트 (또는 솔루션의 모든 프로젝트)에서 binobj폴더를 삭제하십시오 .

모든 프로젝트에서이 폴더를 삭제하는 명령은 다음과 같습니다.

rm *\bin -r
rm *\obj -r

2

Visual Studio에서 "Build on Code"를 기반으로 변경했습니다. Code Analysis는 Global.asax의 Application_Start ()에 대해 "CA1822 멤버를 정적으로 표시"를 제안했습니다. 나는 그것을 하고이 문제로 끝났습니다.

이 Code Analysis 메시지를 억제하고 응용 프로그램 부트 스트랩에 사용되는 플랫폼에서 자동으로 생성 된 메서드 / 클래스의 서명을 변경하지 않는 것이 좋습니다. Application_Start 메소드의 서명은 아마도 정적이 아닌 것 같습니다.

이 메소드 서명으로 되 돌렸고 Application_Start ()가 다시 시작되었습니다.

    protected void Application_Start()
    { ... }

2

정적 페이지 (예 : index.html)를 시작 페이지로 사용할 때이 문제가 발생했습니다. Application-Start가 호출되지 않습니다. 정적 페이지를 제공한다고해서 실제로 응용 프로그램이 시작되지는 않는다는 것을 알았습니다. .aspx 페이지를 요청하면됩니다.


이것이 나를 위해 한 일입니다. 고마워.
reekeecast 2018 년

2

Global.asax와 Global.asax.cs의 네임 스페이스가 동일한 지 확인하십시오. 다른 경우 오류가 발생하지 않지만 application_start를 전혀 실행하지 않기 때문에 중단 점에 도달하지 않습니다.


1

첫 번째 요청이있을 때만 응용 프로그램 시작 이벤트가 시작된다고 생각합니다. 웹 사이트를 방문하고 있습니까 (예 : 요청)?


예, 신청서를 요청하고 있습니다.
Bob Yexley

1

.net 4 웹 양식 vs2010 프로젝트 에서이 문제가 있었고이 페이지에 언급 된 모든 것을 시도했습니다. global.asax를 제거하고 추가하면 실제로 문제가 해결되었습니다.


1

같은 문제가있어 Application_Start를 잡을 수 없었습니다. 그 이유는 마크 업 파일에서 불일치가 발생하지 않았기 때문입니다. 마크 업 파일 Global.asax가 다른 클래스를 상속했습니다 ...


1

프로젝트 설정을 확인 했습니까? 이 문제가 있었고 시작 URL이 서버 특정 포트와 다른 포트로 이동했습니다. 알아내는 데 시간이 너무 오래 걸렸습니다 ...


1

내 상황에 적용 할 수있는 다른 많은 답변을 시도하고 그중 아무것도 운이 없으면 웹 프로젝트 (RIA Services를 사용하는 Silverlight 앱의 서버 쪽 프로젝트)의 속성으로 이동하여 "웹"탭에서 선택한 서버를 "로컬 IIS"에서 "IIS Express"로 변경했습니다. (참고로 VS2013을 사용하고 있습니다.) 문제가 해결되었습니다. Application_Start는 "IIS Express"에서 실행되지만 "로컬 IIS"에서는 실행되지 않습니다. 흥미로운 ...


실행 중입니다. IIS 프로세스에 연결되지 않았거나 실행 된 후에 연결 되었기 때문에 단순히 디버깅 할 수 없습니다.
uygar.raf

1

Application start에서 호출 된 RegisterRoutes ()에서 코드를 단계별로 시도했지만 중단 점에 도달하지 않았습니다. Application_Start가 호출되지 않았 음을 확인했습니다. App_start / RouteConfig.cs를 피상적으로 변경하고 Application_Start가 호출되기 전에 저장해야했습니다. 이 파일은 어딘가에 캐시되어 변경되지 않으면 호출되지 않습니다.



0

System.Diagnostics.Debugger.Break ();를 사용하는 경우 해결 방법 (임시 사용에 적합하다고 생각) 및 Windows 8 컴퓨터에서 "작동하지 않습니다". 그 이유는 Visual Studio의 "Just in time 디버깅"버그입니다.

다음은 "Visual Studio Just-In-Time 디버거"의 키를 수정하는 것입니다.

regedit를 열고 'AppIDFlags'레지스트리 값에 대해 HKEY_CLASSES_ROOT \ AppID {E62A7A31-6025-408E-87F6-81AEB0DC9347}로 이동하여 플래그를 0x8로 설정하십시오.

자세한 내용은 여기 : http://connect.microsoft.com/VisualStudio/feedback/details/770786/just-in-time-debugging-operation-attempted-is-not-supported


0

필자의 경우 시스템 트레이를 통해 기본 제공 ASP.NET 개발 서버 인스턴스를 종료하면 문제가 해결되었습니다.


0

이상하고 미친 것들 ...하지만 서버 컴퓨터와 다른 사용자의 디버깅은 세션에서 IIS Express를 실행하게했습니다. 실행중인 IIS Express 프로세스를 종료하려면 해당 사용자를 로그 오프해야했습니다. 문제가 해결 된 것 같습니다!

최신 정보

문제의 원인이 있었는지 1 명 시간 이상의 추격을 지출 한 후 ... 여기에 거래이다 : 나는 다소을 입력 관리 s내부 <appSettings>섹션 Web.config. Visual Studio가 Error List창에서 경고 와 함께 경고하려고했습니다 . 경고를 거의 확인하지 않는다고 고백합니다 ... 지금부터 확인을 시작해야합니다. : D 내가 문제를 제거하자마자 s중단 점에 부딪쳤다 Application_Start.

여기에 이미지 설명을 입력하십시오


0

log4net을 초기화하려고 할 때이 문제가 발생했습니다. Global.asax의 정적 생성자를 만들기로 결정했습니다.

static Global(){
//Do your initialization here statically
}

0

Global.asax 파일을 다른 솔루션 디렉토리로 재배치하려고 할 때 주로 문제가 발생합니다. Global.asax 파일을 다시 기본 위치로 이동하십시오. 예상대로 작동합니다.


Global.asax.aspx를 포함하여 웹 사이트의 모든 것이 사전 컴파일 된 경우 어떻게됩니까? bin 디렉토리에 파일을 미리 컴파일했습니다. Application_Start가 시작되지 않았습니다.
Vin Shahrdar

0

위에서 설명한 해결책 중 어느 것도 나를 위해 일하지 않았습니다. 그러나 패키지를 다시 설치하십시오.

Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

너겟 GUI를 사용하는 것은 (너무 좋지는 않습니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.