AlwaysRunning으로 설정된 응용 프로그램 풀이 호스팅 서비스를 자동으로 시작하지 않습니다.

AlwaysRunning으로 설정된 응용 프로그램 풀이 호스팅 서비스를 자동으로 시작하지 않습니다.

자동으로 시작되고 절전 모드가 발생하지 않도록 풀을 구성했습니다. 자동 시작에 문제가 있습니다. 제가 이해한 바에 따르면 재활용 후에 스레드 풀 작업자가 시작됩니다. 그런 일이 발생하면 응용 프로그램 진입점이 호출될 것이라고 가정하지만 작동하지 않는 것 같습니다.

애플리케이션이 배포되면 "IIS AspNetCore Modeule" V2 싱크 아래에 다음 로그 항목이 표시됩니다.

  1. 2022년 1월 28일 오전 9:25:15 - 실행 중인 작업: 릴리스
  2. 2022년 1월 28일 오전 9:25:28 - app_offline.htm을 감지한 후 'C:<앱 경로>' 애플리케이션이 재활용되었습니다.
  3. 2022년 1월 28일 오전 9:25:29 - 'MACHINE/WEBROOT/APPHOST//' 애플리케이션이 종료되었습니다.
  4. 2022년 1월 28일 오전 9:25:33 - 작업 릴리스가 완료되어 결과: 성공

어디

  1. DevOps 마이크로서비스 빌드 - 시작
  2. 재활용(빌드가 app_offline을 생성함)
  3. API 종료
  4. DevOps 마이크로서비스 빌드 시작 - 성공

- 'C:<앱 경로>' 애플리케이션이 성공적으로 시작되었습니다.와 같은 관련 API 시작 메시지가 없다는 사실에 의아해합니다.

이는 http 요청을 전혀 받지 않는 .NET Core API "마이크로서비스"라는 점에 유의하는 것이 중요합니다. 코드에서 시작은 다음 구성을 갖습니다.

services.AddHostedService<AuthorizationMessageConsumerService>();

그리고

public class AuthorizationMessageConsumerService : BackgroundService

배포할 때마다 /health 엔드포인트가 ping되면 서비스가 시작됩니다.

AlwaysRunning이 방금 새 요청 스레드를 생성했지만 들어오는 http 요청/health에 의해 호출되는 진입점을 호출하지 않는다고 추측할 수 있습니다.

빌드 및 배포 요구 사항에 대한 핑을 피하려고 합니다. 옵션이 있습니까? 아니면 일정 간격으로 상태 핑을 설정하고 배포 후 설치하는 것이 최선의 솔루션입니까?

IIS 구성

여기에 이미지 설명을 입력하세요

답변1

내가 놓친 한 가지는 IIS 응용 프로그램 수준에서 Preload Enabled=true였습니다. 기본적으로 배포 등으로 인해 재활용된 후 앱을 시작하라는 요청이 전송됩니다.

관련 정보