【问题标题】:Cannot use Server.MapPath to access a external file无法使用 Server.MapPath 访问外部文件
【发布时间】:2013-06-02 13:49:51
【问题描述】:

我有一个 xml 文件,它位于解决方案的文件夹中。我尝试使用Server.MapPath 访问它。它在不同项目的 aspx 页面中运行良好。当我尝试访问我的类库项目中的文件时,我不应该使用Server.MapPath。所以我尝试了HttpContext.Current.Server.MapPath。问题是这个类库项目是从一个单独的 WCF 服务项目调用的,所以当前服务器是 WCF 服务项目的服务器。所以它最终以错误路径无效。

这是我尝试过的-HttpContext.Current.Server.MapPath("./folder/conf.xml.config")

有什么办法吗?

System.Web 已导入。

【问题讨论】:

    标签: c# asp.net path filepath


    【解决方案1】:

    您可以在 中创建 。此 将指向 "folder/conf.xml.config" 的物理位置。

    完成后,您可以使用现有代码访问它,如下所示...

    Server.MapPath("folder/conf.xml.config")
    

    【讨论】:

      【解决方案2】:

      Server.MapPath 仅适用于网站内的文件,并通过指定相对位置来使用:

      string configFile = Server.MapPath("~/App_Data/config.xml.config");
      

      如果您想从其他位置访问文件,则必须手动提供该文件的绝对路径:

      string configFile = @"c:\work\some_folder\config.xml.config";
      

      【讨论】:

      • Darin-我不应该使用您上面提到的绝对路径方法,当有人将此解决方案带到其他机器时可以更改路径。
      • 那么这可能是存储在您的 web.config 中的参数。无论如何,除了指定它们的绝对位置之外,没有其他方法可以访问文件系统上任何位置的文件。否则 ASP.NET 怎么能找到该文件?请记住,一旦在 Web 服务器上部署 Web 应用程序,就不再有任何 Visual Studio 解决方案或项目的概念或解决方案文件的相对路径。您最终得到的是一个部署在服务器上某个文件夹上的网站,您可以使用 MapPath 方法访问该文件夹内的文件。
      • 并添加 - 它是一个类库而不是 MVC4 项目。我正在尝试从类库中的文件夹访问文件。
      • 正如我已经解释过的,没有像类库中的文件夹这样的概念。类库在您的 ASP.NET MVC 应用程序中被引用,当您部署此应用程序时,该类库的原始位置没有任何意义。因此,您也可以复制该文件并将其作为 Web 应用程序的一部分,然后使用 Server.MapPath 访问它。如果您不能这样做或不想这样做,则必须指定绝对位置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多