将凭据传递给 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(( 命令?

将凭据传递给 ASP.NET 4.0 和 IIS7 中的 File.Move()

您可以在此问题中找到所需内容的绝佳实现

使用 using 语句添加特定类后,您可以执行File.Move

只是用

using (new NetworkConnection(@"''server'path", Credentials)) {
   System.IO.File.Move(sourcePathAndFilename, destinationPathAndFileName);
}