我有一个在IIS7上运行的asp.net Web应用程序,它的AppPool标识设置为" NETWORK SERVICE"和管理的管道模式=经典。
web.config包含以下安全设置......
<system.web>
<identity impersonate="true"/>
<authentication mode="Windows" />
</system.web>
Web应用程序从第三方下载数据并在Web应用程序服务器上创建文件。然后通过此命令将这些文件传输到另一台服务器。
System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
当我作为高级用户从服务器运行应用程序时,它工作正常。 当我从客户端计算机上以任何用户身份运行应用程序时,它会失败。 当我从服务器上以低级授权用户身份运行应用程序时,它失败了。
错误是HTTP 401未经授权的访问。
我100%肯定用户&amp; NETWORK SERVICE对源文件夹和目标文件夹都有足够的权限。因此,似乎File.Move()命令正在执行其他内容,但是谁/什么?
在不更改AppPool设置的情况下,Web应用程序是否有办法将用户凭据传递给File.Move()命令?
答案 0 :(得分:1)
您可以在this问题
中找到所需内容的精彩实现在使用使用参数添加特定类后,您可以执行File.Move
只需
using (new NetworkConnection(@"\\server\path", Credentials)) {
System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
}