關于網站應用程序池的帳號密碼更改及其影響的實例分析
實例場景
- 我們有一個網站(名稱為test),它使用了一個應用程序池(名稱也為test)
- 這個應用程序池所使用的用戶帳號為app_pool_test
- 這個帳號當前的密碼,假設為 abc 。當我設置好之后,我可以正常打開網站
這個演示頁面的功能很簡單,我是使用下面的代碼去訪問了一下數據庫
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
namespace WebApplication1
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using(var conn = new SqlConnection("server=(local)\\sqlexpress;database=northwind;integrated security=true"))
{
conn.Open();
Response.Write(conn.State.ToString());
}
}
}
}
請注意,這里我并沒有指定用戶名和密碼,而是使用了integrated security=true。這通常稱為“信任連接”或者“集成驗證”。這個問題,我下面還會解釋。
大家可以看到,網站能正常工作。功能沒有什么了不起的,這是一個簡單的演示而已。但是下面大家思考一個問題:
假設app_pool_test 這個帳號的密碼因為什么原因需要修改(這個很正常,很多公司都有密碼修改策略的),那么
1.網站還是否能正常打開?
2.數據庫還是否能訪問?
我這里就做一個測試,我現在將帳號的密碼修改掉
奇怪的是,我們會發(fā)現網站照樣能打開,數據庫居然也照樣能訪問得上。
首先,這里你應該會有一個疑問:這是為什么呢?難道改了密碼沒有生效嗎?到底什么時候會生效呢?
我們接下去做實驗。假使當前這個服務器,因為某種原因(例如安裝補丁包),需要重新啟動?;蛘吣阕约阂驗槟硞€原因,需要對IIS進行重啟,例如執(zhí)行了下面的命令
然后,我們再次嘗試打開剛才那個網頁,就會發(fā)現如下的錯誤
一般而言,503錯誤都是表示后臺的Application Pool存在問題,我們到IIS中查看,確實發(fā)現它被停止了
而且你還會發(fā)現,無論你如何啟動,只要頁面刷新一下,它就又停止了。
除非,你再次在它這里將正確的用戶名和密碼設置一次。
然后,你會發(fā)現網站能正常工作了
我希望你看懂了我想要描述的一個問題:當網站的應用程序池帳號密碼被修改之后,將如何影響到當前的網站。
先將結論給大家說一下
1. 如果當前的網站,沒有被重置。我測試下來是,只要IIS沒有被重啟過,或者應用程序池沒有被停止過,就可以繼續(xù)使用。
2. 否則,當前網站會無法正常工作,而且應用程序池再也無法啟動,除非設置正確的密碼。
那么,這是為什么呢?
1. IIS啟動的時候,默認會啟動所有的應用程序池,并且使用它們的標識和密碼,去請求windows系統(tǒng)(可能是本機,也可能是AD)進行認證
2. 只要認證通過了,那么應用程序池將啟動,而且這個身份會被緩存起來。
3. 一般的應用程序,要訪問后臺數據庫的時候,如果選擇了“集成驗證(integrated security=true)”這種方式的話,那么就是使用應用程序池的這個身份。
4. “集成驗證”有時候也稱為信任連接,這是什么意思呢?就是說SQL Server其實不再對帳號和密碼進行驗證,它“信任”windows傳遞過來的身份,也就是說,只要上面的第2步通過了,確實帳號是app_pool_test,那么SQL Server就認為它是app_pool_test,而不再重復驗證密碼。
5. 當IIS被重啟,或者應用程序池被重啟,此時就需要再次驗證身份。而如果此時發(fā)現密碼不匹配了,就自然無法啟動應用程序池,然后也自然無法啟動網站,然后也不會發(fā)生訪問數據庫的行為。
總結
在做應用程序部署的時候,你會遇到很多復雜甚至棘手的情況,這篇文章就描述了其中一種常見的狀況:
應用程序池的帳號密碼修改之后(其實,很多時候,作為開發(fā)人員的角度,你可能不知道密碼已經被修改了),所以你可能會發(fā)現一些“詭異”的現象,例如剛剛還能正常使用的程序,突然又不能使用了。理解本文,將有助于你解釋這樣的狀況,以及了解如何解決。
相關文章
服務器完美設置,支持asp php cgi jsp asp.net mysql!
服務器完美設置,支持asp php cgi jsp asp.net mysql!...2007-10-10Win2003下通過IP安全策略限制udp-flood發(fā)包的批處理代碼
這篇文章主要介紹了在Windows 2003下通過IP安全策略限制udp-flood發(fā)包實現方法,需要的朋友可以參考下2013-09-09win2008 R2 WEB環(huán)境配置之Mssql Server 2008 R2 安裝圖文教程及遠程連接設置方法
這篇文章主要介紹了win2008 R2 WEB環(huán)境配置之Mssql Server 2008 R2 安裝圖文教程及遠程連接設置方法,需要的朋友可以參考下2016-06-06Windows Server 2016 服務器配置指南之PHP7運行環(huán)境搭建方法
這篇文章主要介紹了Windows Server 2016 服務器配置指南之PHP7運行環(huán)境搭建方法,需要的朋友可以參考下2017-08-08讓Win2008+IIS7+ASP.NET支持10萬并發(fā)請求
由于之前使用的是默認配置,服務器最多只能處理5000個同時請求,今天下午由于某種情況造成同時請求超過5000,從而出現了上面的錯誤2013-06-06iis 7.5 選中站點提示 錯誤: 無法讀取配置文件的解決方法
今天在本地學習配置windows server 2008 r2的時候,點擊很早以前創(chuàng)建的站點竟然提示錯誤: 無法讀取配置文件,也不知道如何刪除站點重新創(chuàng)建一個也行,經過摸索方法如下,特分享一下需要的朋友可以參考下2016-06-06Apache+php+Mysql在Windows下配置環(huán)境步驟說明
因為是邊配置,邊寫成文檔的,所以就上傳了一個word文檔,有需要的可以看看,少走彎路。2009-12-12