【问题标题】:Is there a way to map a path from an external server?有没有办法从外部服务器映射路径?
【发布时间】:2023-04-10 08:52:02
【问题描述】:

嗯,我一直在使用如下方法在我的服务器上工作:    

System.Web.HttpContext.Current.Server.MapPath("/path/something");

...到目前为止它一直在工作。不过,现在我遇到了一个问题。问题是,我需要编写一个位于外部服务器上的文件。 C# 中是否有方法可以做到这一点?

【问题讨论】:

  • 如果你正在写一个到另一个服务器的路径,不要映射路径,只写文件。目前尚不清楚MapPath 与其他服务器有什么相关性。
  • 该文件如何与您的网络服务器共享?如果它是使用 windows 文件共享(或基于 unix 的等价物)共享的,那么您可以通过它的 UNC 名称来解决它,例如\\server\share\filename.txt。 Server.MapPath 并没有真正进入它,因为这是为了将相对于网络服务器的路径转换为磁盘上的路径,但从另一台服务器共享的文件夹不会成为您的网络服务器的一部分。您只需要知道文件的绝对 UNC 路径,当然您的应用程序需要相关权限才能写入。
  • 您可以将外部服务器位置映射到网络驱动器。例如,您可以将\\server\myfiles 映射到`M:\`。另一种选择是在 IIS 中网站下的某个位置创建一个虚拟目录,该目录指向网络路径。
  • 你所有的答案也很棒。谢谢。

标签: c# system.web mappath


【解决方案1】:

Server.mappath 旨在根据 webroot 的位置将基于 web 的路径转换为本地路径,在尝试访问外部资源时并不严格相关。

唯一的例外是远程文件位置被用作网站文件系统的一部分。例如。如果您的网站中有一个名为“/remotefiles/”的文件夹,并且在 IIS 中,您已将此文件夹映射到远程网络路径。 MapPath 将正常工作,您将检索完整的 UNC 路径。

如果您要访问的服务器与您的 Web 服务器位于同一网络上,但未作为您的 webroot 的一部分引用,那么您应该考虑使用完整的 UNC 路径直接引用相关位置。例如。 "\\ExternalServer\CDrive\SomeStuff\"。

如果通过更广泛的网络远程访问服务器,那么您将需要研究另一种访问方式。

【讨论】:

  • 在此之前已经给出了其他答案,但您的答案更清晰,最好。谢谢你,它按预期工作。
猜你喜欢
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2018-07-29
  • 2020-12-16
相关资源
最近更新 更多