我將內部Web應用程序部署到服務器A,並在創建服務器B上的網絡驅動器時出錯。如果我在本地運行,則成功在服務器B上創建文件。。部署後出現未經授權的訪問異常
System.UnauthorizedAccessException:對路徑'\\ b \ folder \ test.pdf'的訪問被拒絕。
應用程序池的標識是networkservice。而且我對服務器B上的目標文件夾進行了networkservice完全控制。我甚至給出了Everyone
完全控制權,但仍然出現錯誤。
服務器A運行.NET 7.5。代碼創建文件:
var byteArray = generateArray();
var destination = "\\\\b\\folder\\test.pdf";
try {
var destinationFile = new FileInfo(destination);
if (destinationFile.Exists) {
destinationFile.Delete();
}
System.IO.File.WriteAllBytes(destination, byteArray);
} catch (UnauthorizedAccessException) {
//
}
我看到有人得到了完全相同的問題here。但它沒有解決我的問題。
解決方案: 我將身份更改爲管理員帳戶,而不是將network service
用於應用程序池。它有效,但我不完全明白它爲什麼起作用。由於A上的網絡服務不同於B上的網絡服務?
您是否嘗試模擬服務器B的用戶或管理員? – Pikoh
「網絡服務」對每臺服務器都是唯一的,因此一臺機器上的「網絡服務」與另一臺機器上的「網絡服務」不同。但是,這不在重點。 「網絡服務」實際上正在做一些完全不同的事情。當應用程序池作爲「網絡服務」運行時,它實際上是通過Active Directory身份驗證中的*計算機名稱進行身份驗證的。所以如果你的機器被命名爲'WEB1',那麼它就會對'$ WEB1'進行驗證 –