많은 연구를 거쳐 < ID impersonate = true>는 Application_Start 이벤트가 발생한 후에 만 작동합니다.<IDENTITY IMPERSONATE = TRUE> & Application_Start 이벤트
누구든지이 문제의 해결 방법을 알고 있습니까? 응용 프로그램을 처음 시작할 때 데이터베이스를 만들어야하는 응용 프로그램이 있습니다. IIS 웹 사이트가 실행되는 사용자에게는 APP_POOL 사용자가 구체적으로 수행하지 않는 방식으로 수행 할 수있는 적절한 권한이 있습니다.
나의 현재 해킹 솔루션 (peudo 코드)
static bool AppInitialized = false;
void Session_Start() {
if (!AppInitialized) {
AppInitialized=true;
InitializeApp();
}
}
가장 할을 넣어하는 것입니다 = 특정 세션이 시작되는 시간에 의해 "효과"가됩니다 사실 - 그래서이 작품,하지만 난 이후 바보 같다 기본적으로 Application_Start 이벤트의 동작을 다시 작성합니다. 이 문제에 대한 좀 더 세련된 해결책이있는 것처럼 보입니다 - 아니요? - 이상하다
예 - 맞습니다. 문제는 인증 된 사용자의 신원을 탐지하려고 할 때입니다. 즉, ID 필드에 사용자 이름/암호를 지정하면 응용 프로그램 시작 이벤트 중에 사용할 수 있습니다. 인증 된 사용자의 ID를 원할 경우 Application_Start 중에 Session_Start에서 사용할 수 있지만 Application_Start에서는 사용할 수 없습니다. Application_Start 이벤트가 진행되는 동안 APP_POOL ID가 사용됩니다. 이는 내 데이터베이스에 대한 액세스 권한을 부여하지 않으려는 사용자입니다. 이해가 되나요? – eejai42
그것은 의미가 있지만, 어떻게 생각하는지/왜 당신이 그걸하고 싶지 lol =) 어디 응용 프로그램을 시작하려면 귀하의 응용 프로그램에 로그인 할 줄 알았는데? APP POOL은 매번 재활용됩니다 (기본값은 90 분이라고 생각합니다). 따라서 응용 프로그램은 하루 종일 여러 번 중단되고 시작됩니다. 앱을 시작할 때 특정 프로세스가 시작되고 사용자가 수행하는 것이 중요 할 경우 사용자/계정을 수동으로 인증하고 프로세스를 실행 한 다음 가장을 해제해야합니다. 희망이 도움이됩니다. – Losbear