将凭据传递给 ASP.NET 4.0 和 IIS7 中的 File.Move()
本文关键字:中的 IIS7 File Move NET ASP | 更新日期: 2023-09-27 18:34:46
我有一个在 IIS7 上运行的 asp.net Web 应用程序,其应用程序池标识设置为"网络服务",托管管道模式 = 经典。
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(( 命令似乎正在作为其他东西执行,但是谁/什么?
在不更改应用程序池设置的情况下,Web 应用程序是否有办法将用户凭据传递到 File.Move(( 命令?
您可以在此问题中找到所需内容的绝佳实现
使用 using 语句添加特定类后,您可以执行File.Move
只是用
using (new NetworkConnection(@"''server'path", Credentials)) {
System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
}