作者:eaglet
轉(zhuǎn)載請(qǐng)注明出處
IIS7 與 IIS 6 相比有了很大的改動(dòng),原來(lái)在 IIS 6 下可以的設(shè)置到了 IIS 7 下有的會(huì)發(fā)生變化。身份模擬的配置上,IIS7 和 IIS6有很大不同,網(wǎng)上IIS6的身份模擬的文章比較多,但介紹IIS7的比較少,我把的一些折騰的經(jīng)驗(yàn)在這篇博客中寫(xiě)下來(lái),以供參考。
IIS 7 有兩種 ASP.NET Application Mode。
一種是 集成模式(Integrated Mode) 這個(gè)是默認(rèn)的模式,也是微軟推薦的模式,另一種是 經(jīng)典模式(Classic Mode) ,這種模式是用于兼容老版本。集成模式使用更方便而且安全性更好,不需要把模擬帳戶(hù)的用戶(hù)名和密碼寫(xiě)在配置文件中,這樣更安全也更方便。既然我們已經(jīng)用了IIS 7,那么我們還是按微軟推薦的方式使用集成模式比較好。
集成模式下,身份模擬可以完全通過(guò)界面來(lái)完成:
在這個(gè)圖中我們看到 IIS7 多了一個(gè) ASP.NET Impersonation 的功能,在 Actions 里面點(diǎn) Enable 開(kāi)啟身份模擬功能,然后點(diǎn) Edit 編輯身份模擬。
這個(gè)設(shè)置在 IIS 7 下已經(jīng)過(guò)時(shí)了,如果用古典模式,才需要這樣設(shè)置。
找到問(wèn)題原因后,我把 <identity impersonate="true" /> 這個(gè)配置項(xiàng)從 web.config 中刪除了。刪除后,就可以用到前面在界面上配置的用戶(hù)名來(lái)模擬帳號(hào)了。
然而先不要高興的太早,緊接著就出現(xiàn)了新的問(wèn)題。 錯(cuò)誤如下:
Could not load file or assembly 'xxxx' or one of its dependencies. Access is denied.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.從錯(cuò)誤提示看,應(yīng)該是目前這個(gè)模擬帳戶(hù)沒(méi)有足夠的權(quán)限去執(zhí)行 bin 目錄下的 xxxx.dll ,于是我把bin 目錄賦予模擬帳戶(hù) MyAccount 完全控制的權(quán)限,結(jié)果還是不行,我在網(wǎng)上搜了一下,有人說(shuō)需要將C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary 這個(gè)目錄也設(shè)置為完全控制,于是照做了,還是不行。無(wú)奈之下,我把MyAccount 帳戶(hù)加入了 IIS_IUSRS這個(gè)群組,問(wèn)題終于解決。
模擬的帳戶(hù)會(huì)變成 IIS APPPOOL/DefaultAppPool,這個(gè)設(shè)置是不正確的。
到這里IIS7 下設(shè)置身份模擬就全部完成了。
新聞熱點(diǎn)
疑難解答
圖片精選