C# 使用IIS Express进行调试时获取文件的完整路径

C# 使用IIS Express进行调试时获取文件的完整路径,c#,.net,iis,iis-express,directoryinfo,C#,.net,Iis,Iis Express,Directoryinfo,我有一个要调试的.NET应用程序,我的部分应用程序从我的项目中加载了一个文件。此文件位于 C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html 在代码中,我指定了文件的相对路径,并使用DirectoryInfo类获取文件的完整目录路径: string myFile = (new DirectoryInfo("_templates/myFile.html")).Fu

我有一个要调试的.NET应用程序,我的部分应用程序从我的项目中加载了一个文件。此文件位于

C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html
在代码中,我指定了文件的相对路径,并使用DirectoryInfo类获取文件的完整目录路径:

string myFile = (new DirectoryInfo("_templates/myFile.html")).FullName;
但是,这将返回以下路径(额外的作为转义字符):

我希望在IIS Express中调试时返回的路径与我列出的第一个路径匹配,而不是第三个路径。为什么会这样?在我的项目中是否还需要设置其他内容,以便正确地导出路径?我假设如果我将代码部署到IIS7站点,这不会发生,但我还没有达到测试级别。

使用:

或:


谢谢Server.MapPath对我有效,但我无法使HttpServerUtility.MapPath正常工作。对于HttpServerUtility,它不断抱怨非静态字段、方法或属性'System.Web.HttpServerUtility.MapPath(string)'需要对象引用,我尝试了各种编写方法,但没有任何效果,所以我只使用Server.MapPath。再次感谢。不确定这是否是完全相同的情况,但我有相同的对象引用问题。我使用HttpContext解决了这个问题。如-HttpContext.Current.Server.MapPath()中所示;如果它返回
程序文件\\IIS Express\`则表示您从该目录路径启动它,因此请更具体地说明目录路径。考虑到
“\u templates/myFile.html”将是父目录中的一个本地目录,它不是很具体。在这一点上,调用Server.MapPath返回了正确的路径,而无需更具描述性。说到这里,我不认为我必须更具描述性,因为在其他语言中,我将路径视为相对于引用文件的脚本位置的路径,但为了读取其内容,.NET服务器需要路径的完全限定URI,而我只是使用了错误的对象来派生它。我的有效问题为何被否决,令人费解。
"C:\\Program Files\\IIS Express\\_templates\\myFile.html"
Server.MapPath("~/_templates/myFile.html")
HttpServerUtility.MapPath("~/_templates/myFile.html")