【问题标题】:c# The given path's format is not supported. UNC Pathc# 不支持给定路径的格式。 UNC 路径
【发布时间】:2017-09-14 12:10:49
【问题描述】:

我正在尝试从远程服务器访问和下载 bak 文件并不断收到错误消息“不支持给定路径的格式。” 我在下面使用的代码:

string uncPath = Server.MapPath(Path.Combine(@"\\TSTSVR\Users\temp_databaseBackups_000kfkf000", 
  string.Format("{0}-{1}.bak", ddlDatabases.SelectedValue, DateTime.Now.ToString("yyyy-MM-dd"))));

//download
WebClient webClient = new WebClient();
webClient.DownloadFile(uncPath, ddlDatabases.SelectedValue + "-" + DateTime.Now.ToString("MM-dd-yyyy:hh:mm"));

我在 DownloadFile 行收到错误消息。我是否在声明 UNC 路径错误?该文件夹在服务器上,我将访问权限设置为具有写入权限的每个人。

【问题讨论】:

  • 嗯,你正在尝试的东西没有多大意义。该文件是否位于 Web 服务器中?我认为这是因为您使用的是 WebClient 对象。
  • 我不确定您在这里要做什么...Server.MapPath 旨在将网站路径转换为物理路径。尝试将 UNC 路径传递给它是没有意义的。您实际上是在尝试将 UNC 路径更改为 Web 路径吗?如果是这样,你不能这样做。
  • 文件位于该路径的远程服务器上。
  • 您正在尝试将WebClient 与 Samba 共享一起使用。它不会起作用。
  • 你不应该使用 MapPath,也不应该使用 WebClient,因为你有一个 UNC 路径,直接打开文件,假设你的应用程序被允许这样做。

标签: c# remote-server


【解决方案1】:

在您的正确方向的一些提示的帮助下,我用以下代码解决了这个问题:

string uncPath = Path.Combine(@"\\TSTSVR\Users\temp_databaseBackups_000kfkf000",
  string.Format("{0}-{1}.bak", ddlDatabases.SelectedValue, DateTime.Now.ToString("yyyy-MM-dd")));

//download
Response.ContentType = "bak";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + ddlDatabases.SelectedValue + "-" + DateTime.Now.ToString("MM-dd-yyyy:hh:mm") + "\"");

Response.TransmitFile(uncPath);
Response.End();

程序现在将从远程服务器下载所需的文件。

【讨论】:

    【解决方案2】:

    如果远程机器在 Windows 控制下工作,则路径中不允许使用冒号。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 2012-04-21
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2017-06-26
      相关资源
      最近更新 更多