我有一个在 IIS7 上运行的 asp.net Web 应用程序,其 AppPool 标识设置为“网络服务”,托管管道模式 = 经典。
web.config 包含以下安全设置...
<system.web>
<identity impersonate="true"/>
<authentication mode="Windows" />
</system.web>
Web 应用程序从第三方下载数据并在 Web 应用程序服务器上创建文件。然后通过此命令将这些文件传输到另一台服务器。
System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
当我以高级用户身份从服务器运行该应用程序时,它工作正常。 当我以任何用户身份从客户端计算机运行该应用程序时,它会失败。 当我从服务器以低级别授权用户身份运行该应用程序时,它会失败。
错误是 HTTP 401 未经授权的访问。
我 100% 确定用户和网络服务对源文件夹和目标文件夹都拥有足够的权限。所以,看起来 File.Move() 命令正在作为其他命令执行,但是谁/什么?
在不更改 AppPool 设置的情况下,Web 应用程序是否可以将用户凭据传递给 File.Move() 命令?
最佳答案
您可以在this中找到您需要的一个很好的实现。问题
使用 using 语句添加特定类后,您可以执行 File.Move
只是
using (new NetworkConnection(@"\\server\path", Credentials)) {
System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
}
关于c# - 将凭据传递给 ASP.NET 4.0 和 IIS7 中的 File.Move(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567163/