關(guān)于網(wǎng)站應(yīng)用程序池的帳號(hào)密碼更改及其影響的實(shí)例分析
實(shí)例場(chǎng)景
- 我們有一個(gè)網(wǎng)站(名稱為test),它使用了一個(gè)應(yīng)用程序池(名稱也為test)
- 這個(gè)應(yīng)用程序池所使用的用戶帳號(hào)為app_pool_test
- 這個(gè)帳號(hào)當(dāng)前的密碼,假設(shè)為 abc 。當(dāng)我設(shè)置好之后,我可以正常打開網(wǎng)站
這個(gè)演示頁(yè)面的功能很簡(jiǎn)單,我是使用下面的代碼去訪問(wèn)了一下數(shù)據(jù)庫(kù)
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());
}
}
}
}
請(qǐng)注意,這里我并沒(méi)有指定用戶名和密碼,而是使用了integrated security=true。這通常稱為“信任連接”或者“集成驗(yàn)證”。這個(gè)問(wèn)題,我下面還會(huì)解釋。
大家可以看到,網(wǎng)站能正常工作。功能沒(méi)有什么了不起的,這是一個(gè)簡(jiǎn)單的演示而已。但是下面大家思考一個(gè)問(wèn)題:
假設(shè)app_pool_test 這個(gè)帳號(hào)的密碼因?yàn)槭裁丛蛐枰薷模ㄟ@個(gè)很正常,很多公司都有密碼修改策略的),那么
1.網(wǎng)站還是否能正常打開?
2.數(shù)據(jù)庫(kù)還是否能訪問(wèn)?
我這里就做一個(gè)測(cè)試,我現(xiàn)在將帳號(hào)的密碼修改掉
奇怪的是,我們會(huì)發(fā)現(xiàn)網(wǎng)站照樣能打開,數(shù)據(jù)庫(kù)居然也照樣能訪問(wèn)得上。
首先,這里你應(yīng)該會(huì)有一個(gè)疑問(wèn):這是為什么呢?難道改了密碼沒(méi)有生效嗎?到底什么時(shí)候會(huì)生效呢?
我們接下去做實(shí)驗(yàn)。假使當(dāng)前這個(gè)服務(wù)器,因?yàn)槟撤N原因(例如安裝補(bǔ)丁包),需要重新啟動(dòng)?;蛘吣阕约阂?yàn)槟硞€(gè)原因,需要對(duì)IIS進(jìn)行重啟,例如執(zhí)行了下面的命令
然后,我們?cè)俅螄L試打開剛才那個(gè)網(wǎng)頁(yè),就會(huì)發(fā)現(xiàn)如下的錯(cuò)誤
一般而言,503錯(cuò)誤都是表示后臺(tái)的Application Pool存在問(wèn)題,我們到IIS中查看,確實(shí)發(fā)現(xiàn)它被停止了
而且你還會(huì)發(fā)現(xiàn),無(wú)論你如何啟動(dòng),只要頁(yè)面刷新一下,它就又停止了。
除非,你再次在它這里將正確的用戶名和密碼設(shè)置一次。
然后,你會(huì)發(fā)現(xiàn)網(wǎng)站能正常工作了
我希望你看懂了我想要描述的一個(gè)問(wèn)題:當(dāng)網(wǎng)站的應(yīng)用程序池帳號(hào)密碼被修改之后,將如何影響到當(dāng)前的網(wǎng)站。
先將結(jié)論給大家說(shuō)一下
1. 如果當(dāng)前的網(wǎng)站,沒(méi)有被重置。我測(cè)試下來(lái)是,只要IIS沒(méi)有被重啟過(guò),或者應(yīng)用程序池沒(méi)有被停止過(guò),就可以繼續(xù)使用。
2. 否則,當(dāng)前網(wǎng)站會(huì)無(wú)法正常工作,而且應(yīng)用程序池再也無(wú)法啟動(dòng),除非設(shè)置正確的密碼。
那么,這是為什么呢?
1. IIS啟動(dòng)的時(shí)候,默認(rèn)會(huì)啟動(dòng)所有的應(yīng)用程序池,并且使用它們的標(biāo)識(shí)和密碼,去請(qǐng)求windows系統(tǒng)(可能是本機(jī),也可能是AD)進(jìn)行認(rèn)證
2. 只要認(rèn)證通過(guò)了,那么應(yīng)用程序池將啟動(dòng),而且這個(gè)身份會(huì)被緩存起來(lái)。
3. 一般的應(yīng)用程序,要訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的時(shí)候,如果選擇了“集成驗(yàn)證(integrated security=true)”這種方式的話,那么就是使用應(yīng)用程序池的這個(gè)身份。
4. “集成驗(yàn)證”有時(shí)候也稱為信任連接,這是什么意思呢?就是說(shuō)SQL Server其實(shí)不再對(duì)帳號(hào)和密碼進(jìn)行驗(yàn)證,它“信任”windows傳遞過(guò)來(lái)的身份,也就是說(shuō),只要上面的第2步通過(guò)了,確實(shí)帳號(hào)是app_pool_test,那么SQL Server就認(rèn)為它是app_pool_test,而不再重復(fù)驗(yàn)證密碼。
5. 當(dāng)IIS被重啟,或者應(yīng)用程序池被重啟,此時(shí)就需要再次驗(yàn)證身份。而如果此時(shí)發(fā)現(xiàn)密碼不匹配了,就自然無(wú)法啟動(dòng)應(yīng)用程序池,然后也自然無(wú)法啟動(dòng)網(wǎng)站,然后也不會(huì)發(fā)生訪問(wèn)數(shù)據(jù)庫(kù)的行為。
總結(jié)
在做應(yīng)用程序部署的時(shí)候,你會(huì)遇到很多復(fù)雜甚至棘手的情況,這篇文章就描述了其中一種常見(jiàn)的狀況:
應(yīng)用程序池的帳號(hào)密碼修改之后(其實(shí),很多時(shí)候,作為開發(fā)人員的角度,你可能不知道密碼已經(jīng)被修改了),所以你可能會(huì)發(fā)現(xiàn)一些“詭異”的現(xiàn)象,例如剛剛還能正常使用的程序,突然又不能使用了。理解本文,將有助于你解釋這樣的狀況,以及了解如何解決。
相關(guān)文章
Win2003 IIS瀏覽ASP提示無(wú)法找到該頁(yè)的解決辦法
今天配置服務(wù)器的時(shí)候,幫客戶轉(zhuǎn)移了網(wǎng)站,因?yàn)楹芏嗑W(wǎng)站都訪問(wèn)正常, 但訪問(wèn)他的asp頁(yè)面就提示無(wú)法找到該頁(yè),訪問(wèn)靜態(tài)都是好好的,經(jīng)過(guò)排查原來(lái)是web服務(wù)擴(kuò)展里面的asp未啟用2012-12-12開放windows服務(wù)器端口(以打開端口8080為例)
我們平時(shí)所說(shuō)的端口其實(shí)不是指物理意義上的端口,而是特指TCP/IP協(xié)議中的端口,是邏輯意義上的端口。這篇文章主要介紹了開放windows服務(wù)器端口(以打開端口8080為例),需要的朋友可以參考下2019-10-10服務(wù)器完美設(shè)置,支持asp php cgi jsp asp.net mysql!
服務(wù)器完美設(shè)置,支持asp php cgi jsp asp.net mysql!...2007-10-10Win2003下通過(guò)IP安全策略限制udp-flood發(fā)包的批處理代碼
這篇文章主要介紹了在Windows 2003下通過(guò)IP安全策略限制udp-flood發(fā)包實(shí)現(xiàn)方法,需要的朋友可以參考下2013-09-09win2008 R2 WEB環(huán)境配置之Mssql Server 2008 R2 安裝圖文教程及遠(yuǎn)程連接設(shè)置方法
這篇文章主要介紹了win2008 R2 WEB環(huán)境配置之Mssql Server 2008 R2 安裝圖文教程及遠(yuǎn)程連接設(shè)置方法,需要的朋友可以參考下2016-06-06Windows Server 2016 服務(wù)器配置指南之PHP7運(yùn)行環(huán)境搭建方法
這篇文章主要介紹了Windows Server 2016 服務(wù)器配置指南之PHP7運(yùn)行環(huán)境搭建方法,需要的朋友可以參考下2017-08-08讓W(xué)in2008+IIS7+ASP.NET支持10萬(wàn)并發(fā)請(qǐng)求
由于之前使用的是默認(rèn)配置,服務(wù)器最多只能處理5000個(gè)同時(shí)請(qǐng)求,今天下午由于某種情況造成同時(shí)請(qǐng)求超過(guò)5000,從而出現(xiàn)了上面的錯(cuò)誤2013-06-06iis 7.5 選中站點(diǎn)提示 錯(cuò)誤: 無(wú)法讀取配置文件的解決方法
今天在本地學(xué)習(xí)配置windows server 2008 r2的時(shí)候,點(diǎn)擊很早以前創(chuàng)建的站點(diǎn)竟然提示錯(cuò)誤: 無(wú)法讀取配置文件,也不知道如何刪除站點(diǎn)重新創(chuàng)建一個(gè)也行,經(jīng)過(guò)摸索方法如下,特分享一下需要的朋友可以參考下2016-06-06Apache+php+Mysql在Windows下配置環(huán)境步驟說(shuō)明
因?yàn)槭沁吪渲?,邊寫成文檔的,所以就上傳了一個(gè)word文檔,有需要的可以看看,少走彎路。2009-12-12