作者:eaglet
轉載請注明出處
IIS7 與 IIS 6 相比有了很大的改動,原來在 IIS 6 下可以的設置到了 IIS 7 下有的會發生變化。身份模擬的配置上,IIS7 和 IIS6有很大不同,網上IIS6的身份模擬的文章比較多,但介紹IIS7的比較少,我把的一些折騰的經驗在這篇博客中寫下來,以供參考。
IIS 7 有兩種 ASP.NET Application Mode。
一種是 集成模式(Integrated Mode) 這個是默認的模式,也是微軟推薦的模式,另一種是 經典模式(Classic Mode) ,這種模式是用于兼容老版本。集成模式使用更方便而且安全性更好,不需要把模擬帳戶的用戶名和密碼寫在配置文件中,這樣更安全也更方便。既然我們已經用了IIS 7,那么我們還是按微軟推薦的方式使用集成模式比較好。
集成模式下,身份模擬可以完全通過界面來完成:
在這個圖中我們看到 IIS7 多了一個 ASP.NET Impersonation 的功能,在 Actions 里面點 Enable 開啟身份模擬功能,然后點 Edit 編輯身份模擬。
這個設置在 IIS 7 下已經過時了,如果用古典模式,才需要這樣設置。
找到問題原因后,我把 <identity impersonate="true" /> 這個配置項從 web.config 中刪除了。刪除后,就可以用到前面在界面上配置的用戶名來模擬帳號了。
然而先不要高興的太早,緊接著就出現了新的問題。 錯誤如下:
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.從錯誤提示看,應該是目前這個模擬帳戶沒有足夠的權限去執行 bin 目錄下的 xxxx.dll ,于是我把bin 目錄賦予模擬帳戶 MyAccount 完全控制的權限,結果還是不行,我在網上搜了一下,有人說需要將C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary 這個目錄也設置為完全控制,于是照做了,還是不行。無奈之下,我把MyAccount 帳戶加入了 IIS_IUSRS這個群組,問題終于解決。
模擬的帳戶會變成 IIS APPPOOL/DefaultAppPool,這個設置是不正確的。
到這里IIS7 下設置身份模擬就全部完成了。
新聞熱點
疑難解答
圖片精選