2016-09-28 80 views
5

我有一個使用Windows身份驗證和模擬的ASP.NET Web應用程序。下面是web.config中的相關部分:瞭解模擬權限

<authentication mode="Windows"/> 
<identity impersonate="true"/> 

的應用程序代碼現在試圖訪問一個文件(XDocument.Load)是通過身份驗證的用戶可以訪問。這工作完全正常直到今天,我們開始收到以下異常,而不是:

System.UnauthorizedAccessException: Access to the path '...' is denied. 

(顯然,管理員告訴我說:「什麼也沒有在服務器上更改」。)

我能「通過授予文件的應用程序池標識權限來修復該問題。但是,我不明白爲什麼這個問題解決了。

我的問題:如果使用模擬,爲什麼應用程序池標識仍然需要訪問所使用的文件?模擬用戶和應用程序池標識是否都需要訪問?還是隻有應用程序池標識?如果是後者,那麼扮演的角色是什麼?

回答

1

該網站通過使用w3wp.exe工作進程 訪問磁盤,該進程本質上是應用程序池。爲 應用程序池(例如,IIS Apppool \ Site001)設置的標識用於 磁盤上的某些情況。

使用Windows身份驗證時,應用程序池標識(例如 IIS Apppool \ Site001)用於某些訪問,但Windows帳戶 (例如User1)用於其他訪問。這取決於您正在使用的應用程序或框架的模擬 設置。 因此,您通常需要授予對應用程序 池標識的訪問權限,以及需要訪問您的站點的每個Windows帳戶(例如User1,User2,User99) 。

這裏來自Scott Forsyth Article的一些引號。如果我正確地理解了你,這篇文章應該有所幫助

+0

謝謝,這是一個有趣的閱讀。所以我想我的問題的答案在於作者總結爲「某些訪問」和「其他訪問」的細節。因此,+1指向正確的方向,但沒有複選標記,因爲缺少這些詳細信息。 :-) – Heinzi