奇怪的是,我們會發現網站照樣能打開,數據庫居然也照樣能訪問得上。
服務器,因為某種原因(例如安裝補丁包),需要重新啟動?;蛘吣阕约阂驗槟硞€原因,需要對IIS進行重啟,例如執行了下面的命令
一般而言,503錯誤都是表示后臺的Application Pool存在問題,我們到IIS中查看,確實發現它被停止了
然后,你會發現網站能正常工作了
我希望你看懂了我想要描述的一個問題:當網站的應用程序池帳號密碼被修改之后,將如何影響到當前的網站。
先將結論給大家說一下
1. 如果當前的網站,沒有被重置。我測試下來是,只要IIS沒有被重啟過,或者應用程序池沒有被停止過,就可以繼續使用。
2. 否則,當前網站會無法正常工作,而且應用程序池再也無法啟動,除非設置正確的密碼。
那么,這是為什么呢?
1. IIS啟動的時候,默認會啟動所有的應用程序池,并且使用它們的標識和密碼,去請求windows系統(可能是本機,也可能是AD)進行認證
2. 只要認證通過了,那么應用程序池將啟動,而且這個身份會被緩存起來。
3. 一般的應用程序,要訪問后臺數據庫的時候,如果選擇了“集成驗證(integrated security=true)”這種方式的話,那么就是使用應用程序池的這個身份。
4. “集成驗證”有時候也稱為信任連接,這是什么意思呢?就是說SQL Server其實不再對帳號和密碼進行驗證,它“信任”windows傳遞過來的身份,也就是說,只要上面的第2步通過了,確實帳號是app_pool_test,那么SQL Server就認為它是app_pool_test,而不再重復驗證密碼。
5. 當IIS被重啟,或者應用程序池被重啟,此時就需要再次驗證身份。而如果此時發現密碼不匹配了,就自然無法啟動應用程序池,然后也自然無法啟動網站,然后也不會發生訪問數據庫的行為。
總結在做應用程序部署的時候,你會遇到很多復雜甚至棘手的情況,這篇文章就描述了其中一種常見的狀況:
應用程序池的帳號密碼修改之后(其實,很多時候,作為開發人員的角度,你可能不知道密碼已經被修改了),所以你可能會發現一些“詭異”的現象,例如剛剛還能正常使用的程序,突然又不能使用了。理解本文,將有助于你解釋這樣的狀況,以及了解如何解決。
新聞熱點
疑難解答
圖片精選