2012-07-11 24 views
0

所以 - 經過反覆研究,看來該<身份冒充= TRUE>只能Application_Start事件閃光後。<IDENTITY IMPERSONATE = TRUE>&Application_Start事件

有誰知道任何解決此問題的?我有一個應用程序需要在應用程序第一次啓動時創建數據庫。 IIS網站運行的用戶具有適當的權限,以便APP_POOL用戶特定的方式沒有。

我現在的HACK的解決辦法是把(peudo代碼)

static bool AppInitialized = false; 
void Session_Start() { 
    if (!AppInitialized) { 
    AppInitialized=true; 
    InitializeApp(); 
    } 
} 

冒充= true,將是「有效」的時間特定的會話開始 - 所以這工作,但因爲我似乎傻基本上是重新創建Application_Start事件的行爲。似乎那裏必須是一個更優雅的解決方案 - 不是嗎?

回答

0

這是奇怪 - 我在我的web.config文件此項:

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

當我檢查的的Application_Start()事件中的身份,它給我「thisuser」。

那是不正確的?

+0

是的 - 這是正確的。問題在於您何時試圖檢測經過身份驗證的用戶身份。換句話說,如果您在標識字段中指定了用戶名/密碼,則它在應用程序啓動事件期間可用。如果想要身份驗證的用戶,它在Session_Start中可用,但在Application_Start期間不可用。在Application_Start事件期間,使用了APP_POOL標識,這是我不想授予數據庫訪問權的用戶。這是否合理? – eejai42 2012-07-11 15:28:21

+0

這是有道理的,但我試圖想如何/爲什麼你要做到這一點笑=) 如果你想你登錄到你的app啓動應用程序? APP POOL會經常回收(我認爲默認值是90分鐘),因此應用程序將在一整天內停止並啓動多次。 如果您希望在應用程序啓動時啓動某個特定進程(並且用戶這麼做很重要),則應該手動驗證用戶/帳戶並運行您的進程,然後釋放模擬。 希望這有助於 – Losbear 2012-07-12 16:29:28

相關問題