Iis

為什麼我只能在一個 ApplicationPoolIdentity 下訪問我的文件共享?

  • November 7, 2014

我在這裡搜尋並找到了一些可以嘗試的方法,但沒有其他問題與我的 IIS 和應用程序設置所發生的完全匹配。

首先,一些背景。我公司的一個客戶想要一次對其重寫的位進行內部應用。我進入該項目時無法控制初始 IIS 設置,並且似乎有一些無法正常工作的時髦的東西,但我會解決的。第一位是自定義標籤應用程序,它將文件寫入要列印的文件共享。為了維護需要的遺留應用程序的一部分,我在 IIS 中創建了一個單獨的站點,並將所有遺留標籤應用程式碼移到那裡。我還在他們的預設網站下創建了一個新的子應用程序。所以結構看起來像:

IIS

  • 預設站點

    • 新標籤應用程序(目前與舊版應用程序完全相同的程式碼庫)
  • 舊版標籤應用

預設站點在名為 ASP.NET v4.0 的應用程序池標識下執行,而不是 DefaultAppPool,並且新應用程序在以站點命名的應用程序池標識下執行 - 標籤。

問題

新標籤的子應用程序可以毫無問題地寫入文件共享,但舊站點正在被拒絕訪問。這是完全相同的程式碼庫,兩者之間的唯一區別是正在使用的應用程序池。我想分別維護這些應用程序池,但目前它們的設置相同。因此,這讓我相信在我參與其中之前 IIS 中已經設置了一些東西,其中 ASP.NET v4.0 應用程序池標識以某種方式神奇地可以訪問文件共享,而新創建的標籤帳戶卻沒有。

文件共享對所有人組開放,因此域級別應該沒有任何問題,但據我了解,這些生成的 IIS 帳戶無論如何都是虛擬 IIS AppPool 域的一部分。那麼,一個應用程序池身份有訪問權限而一個沒有訪問權限怎麼可能呢?在故障排除過程中我可以採取哪些步驟?

這只是我在此答案中所寫的 IIS 錯誤的另一種表現形式。您會發現重新啟動可以修復它。有一個修補程序可用。

您的兩個站點的不同行為只能歸因於它們執行的兩個不同的應用程序池標識。您沒有明確提及工作池和非工作池的身份。“標籤”是應用程序池的名稱。檢查池屬性以查看其執行的身份並將其與舊池的身份進行比較。

在此處輸入圖像描述

此錯誤已導致我們的生產站點多次停機,並影響了客戶。所以我不認為這個 IIS 7.5 更新檔是可選的——因為微軟似乎在暗示過去 4 年拒絕通過標準更新渠道解決這個問題。強迫客戶在生產停機期間“發現”這個錯誤是令人髮指的。

引用自:https://serverfault.com/questions/640953