2012-07-11 2 views
0

많은 연구를 거쳐 < 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 이벤트의 동작을 다시 작성합니다. 이 문제에 대한 좀 더 세련된 해결책이있는 것처럼 보입니다 - 아니요? - 이상하다

답변

0

나는 내 web.config 파일에이 항목이 있습니다

<identity impersonate="true" password="blarhg" userName="thisuser"/> 

을 그리고 나는 위해 Application_Start() 이벤트에 신원을 확인할 때, 그것은 나에게 "thisuser"을주고있다.

맞지 않습니까?

+0

예 - 맞습니다. 문제는 인증 된 사용자의 신원을 탐지하려고 할 때입니다. 즉, ID 필드에 사용자 이름/암호를 지정하면 응용 프로그램 시작 이벤트 중에 사용할 수 있습니다. 인증 된 사용자의 ID를 원할 경우 Application_Start 중에 Session_Start에서 사용할 수 있지만 Application_Start에서는 사용할 수 없습니다. Application_Start 이벤트가 진행되는 동안 APP_POOL ID가 사용됩니다. 이는 내 데이터베이스에 대한 액세스 권한을 부여하지 않으려는 사용자입니다. 이해가 되나요? – eejai42

+0

그것은 의미가 있지만, 어떻게 생각하는지/왜 당신이 그걸하고 싶지 lol =) 어디 응용 프로그램을 시작하려면 귀하의 응용 프로그램에 로그인 할 줄 알았는데? APP POOL은 매번 재활용됩니다 (기본값은 90 분이라고 생각합니다). 따라서 응용 프로그램은 하루 종일 여러 번 중단되고 시작됩니다. 앱을 시작할 때 특정 프로세스가 시작되고 사용자가 수행하는 것이 중요 할 경우 사용자/계정을 수동으로 인증하고 프로세스를 실행 한 다음 가장을 해제해야합니다. 희망이 도움이됩니다. – Losbear