C#:Server.Mappath如何读取文件?

C#:Server.Mappath如何读取文件?,c#,wcf,file-io,mapping,C#,Wcf,File Io,Mapping,我有一个VisualStudio2008解决方案,其中包含一些项目。一个项目包含一个我正在部署的。该WCF服务引用了其他某个项目中的某些代码。该代码试图读取WCF项目文件夹中的文件。伪项目结构: Solution Project1 myclass.cs string file = Server.Mappath(""); Project2 filefolder myfile.txt 映射路径中的正确语法是什么?我尝试过所有不同的变体,例如: ".filefolde

我有一个VisualStudio2008解决方案,其中包含一些项目。一个项目包含一个我正在部署的。该WCF服务引用了其他某个项目中的某些代码。该代码试图读取WCF项目文件夹中的文件。伪项目结构:

Solution
 Project1
  myclass.cs
    string file = Server.Mappath("");


 Project2
  filefolder
    myfile.txt
映射路径中的正确语法是什么?我尝试过所有不同的变体,例如:

".filefolder/myfile.txt"
"/filefolder/myfile.txt"
"./filefolder/myfile.txt"
"~/filefolder/myfile.txt"

似乎没有人能找到这个文件。我想到了一件事:VisualStudio2008在自己的沙箱中运行该项目和WCF。这可能是问题所在吗?如果在常规IIS中安装和部署,它会起作用吗?

最好不要这样做


为什么要将一个项目的部署位置绑定到另一个项目的部署位置?如果需要WCF服务读取文件,请将文件复制到WCF服务。

来自MSDN;由于以下示例中的路径参数不是以斜杠字符开头,因此它们相对于包含示例文件的目录进行映射

尝试:

你试过使用吗


问题是,在调用WCF时,文件系统一直运行到bin/Debug文件夹。因此,试图从那里映射数学是行不通的。回溯路径起作用:

filedata = File.ReadAllBytes("../../filefolder/myfile.txt");
成功了。谢谢大家的帮助

Server.MapPath(Path.Combine( new DirectoryInfo( HostingEnvironment.ApplicationPhysicalPath ).Parent.Name , "Filename.txt" ));
似乎对我有用。我确实需要包括

using System.Web.Hosting;

Project1包含我不想向购买WCF(Project2)的客户公开的所有数据访问和业务对象。他们得到的只是带有端点和一些DLL的WCF项目。然而,WCF服务需要访问DAL/BLL项目中的一些文件。这些项目也需要该文件吗?在任何情况下,要么把文件放在与WCF服务相同的文件夹中,要么把文件的路径放在WCF项目的配置文件中。该文件存储在WCF项目(2)中。DAL/BLL项目(1)需要读取该文件,对其执行一些操作,并将结果传递给WCF以退出终结点。奇怪的是,我将需要访问的文件从Project2移动到Project1,但它仍然找不到它!我尝试了:HttpContext.Current.Server.MapPath(“filefolder/myfile.txt”)和HttpContext.Current.Server.MapPath(“filefolder/myfile.txt”)这也不起作用,我想我尝试了所有可能的路径!美好的这个特别的答案帮了我很大的忙。它在一个部分信任的环境中工作,而其他答案则没有。如果没有选择这个正确的答案,并且自私,选择自己的答案,请投反对票
Server.MapPath(Path.Combine( new DirectoryInfo( HostingEnvironment.ApplicationPhysicalPath ).Parent.Name , "Filename.txt" ));
using System.Web.Hosting;
var serverPath =
       System.Web.Hosting.HostingEnvironment.MapPath("~/filefolder/myfile.txt");