【发布时间】:2016-05-11 14:57:59
【问题描述】:
我将内部 Web 应用程序部署到服务器 A 并在服务器 B 上的网络驱动器上创建文件时出错。如果我在本地运行,则文件已成功创建在服务器 B 上。
System.UnauthorizedAccessException:对路径“\\b\folder\test.pdf”的访问被拒绝。
应用程序池的标识是networkservice。我让 networkservice 完全控制服务器 B 上的目标文件夹。我什至给了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 的用户或管理员?
-
Network Service对于每台服务器都是唯一的,因此一台机器上的Network Service与另一台机器上的不同。然而,这无关紧要。Network Service实际上正在做一些完全不同的事情。当应用程序池以Network Service运行时,它实际上是针对 Active Directory 身份验证中的 机器名称 进行身份验证的。所以如果你的机器被命名为WEB1,那么它会针对$WEB1进行身份验证
标签: c# asp.net exception iis-7.5