4

好的,刚刚与我们的服务器管理员交谈,两台服务器都设置了所有权限。现在我收到一个错误:找不到网络路径。我为这个演示提供了虚拟服务器名称我是否使用了错误的名称。我是否应该尝试使用 IP 地址并仍然收到此错误。我究竟做错了什么?

'File.Copy("\\sever.name.local.mil\pdf\audits\2009-05-19audit-09-01.pdf", 
 "\\sever.name.remote.mil\sigar_cms\pdf\audits\2009-05-19audit-09-01.pdf")'

谁能给我一些建议,这让我脑筋急转弯。

谢谢

4

6 回答 6

3
Dim FilePath As String = "\\sigar" & "\pdf\audits\" & ""

这将创建字符串\\sigar\pdf\audits\。您可以将该行简化为:

Dim FilePath As String = "\\sigar\pdf\audits\"

Server.MapPath用于将网站中的虚拟路径转换为服务器上的文件路径。换句话说,您根本不需要使用它。将您的第二行更改为:

FileUpload1.SaveAs(FilePath + FileName)

如果这不起作用,则可能是您的应用程序池在其下运行的身份没有权限在指定路径中写入文件。尝试调整sigar.

更新

要仅复制文件,请使用File.Copy

File.Copy("\\serverA\path\to\file", "\\serverB\path\to\file")
于 2012-11-14T22:09:59.717 回答
2

已解决:我想通了。我想使用与映射驱动器相同的网络路径。忘记使用 $ 美元符号。

 ''# Save files to disk
  FileUpload1.SaveAs(Server.MapPath("../pdf/audits/" & FileName))

 ''# Local Path
  Dim localPath As String = "\\localserver\folder$\pdf\audits\"

 ''# Remote Path
  Dim remotePath As String = "\\remoteserver\folder$\pdf\audits\"

 ''# Copy from Local to Remote servers
  System.IO.File.Copy(localPath + FileName, remotePath + FileName)
于 2012-11-15T17:31:23.947 回答
0

发布的代码有几处错误。如果您有更多代码,我建议您发布它。话虽如此,根据我所看到的,阅读这篇 MS 文章将回答您的问题——正如它目前所表达的那样。

写一个文本文件Basic File IO

此示例代码使用 StreamWriter 类来创建和写入文件。如果你有一个现有文件,你可以用同样的方式打开它。

Dim writer As StreamWriter = _
New StreamWriter("c:\KBTest.txt")
writer.WriteLine("File created using StreamWriter class.")
writer.Close()
于 2012-11-14T21:59:49.490 回答
0

假设两台服务器在同一个本地网络上并且您具有适当的访问权限,您应该能够使用 File.Copy 方法并为每个服务器/路径使用 UNC。

如果情况比简单地在两个对等服务器之间复制文件要复杂一些,您可能需要考虑使用 FTP 或 SSH 作为传输方法。

于 2012-11-14T22:44:57.640 回答
0

由于您标记,我假设这是在 IIS 的应用程序池下运行的 Web 应用程序中。

您的第一步是确保您的应用程序池用户帐户对您的其他帐户具有写入权限。默认情况下,此帐户类似于IIS_USR.

第二步是将文件保存到第二台服务器。

Dim FilePath As String = "\\sigar\pdf\audits\"
Dim FileName As String = "MyFile.txt"

FileUpload1.SaveAs(String.Format("{0}{1}",FilePath, FileName))

您还可以创建自己的写入方法

Dim SourcePath As String = "C:\foo\pdf\audits\"
Dim FileName As String = "MyFile.txt"

Dim FileToCopy As String = String.Format("{0}{1}",SourcePath, FileName)

Dim DestPath As String = "\\sigar\pdf\audits\"

System.IO.File.Copy(FileToCopy, DestPath)
于 2012-11-14T22:46:28.510 回答
0

@Gee 我调整了您的代码以从服务器上的一个位置复制到同一服务器上的另一个位置。此代码有效。首先在您的环境中执行此操作——只是为了确定。

在我看来,这是某种网络访问问题。跨域、用户或组权限或限制等。

Imports System.IO
File.Copy("\\CHI-CSD-06.mycompany.local\temp1\testfile.txt", "\\CHI-CSD-06.mycompany.local\temp2\testfile.txt")
于 2012-11-15T17:02:32.550 回答