C# 为什么Server.MapPath在路径中添加额外目录
我正在使用C# 为什么Server.MapPath在路径中添加额外目录,c#,asp.net,asp.net-web-api,rdlc,server.mappath,C#,Asp.net,Asp.net Web Api,Rdlc,Server.mappath,我正在使用HttpContext.Current.Server.MapPath函数查找StudentReport.rdlc文件,该文件位于类库项目下 解决方案结构: "C:\\Users\\tom\\source\\repos\\WebDemo\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc" "C:\\Users\\tom\\source\\repos\\WebDemo\\StudentLib\\Reports\\StudentReport
HttpContext.Current.Server.MapPath
函数查找StudentReport.rdlc
文件,该文件位于类库项目下
解决方案结构:
"C:\\Users\\tom\\source\\repos\\WebDemo\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
"C:\\Users\\tom\\source\\repos\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
我从名为WebDemo
的webapi项目中调用类库项目中的以下函数
public class Reports
{
public string GetReportPath()
{
string path1 = System.AppDomain.CurrentDomain.BaseDirectory;
var path2 = System.Web.HttpContext.Current.Server.MapPath("~/StudentReport.rdlc");
var path3 = System.Web.HttpContext.Current.Server.MapPath("~/BL/ClassLib/StudentLib
/Reports/StudentReport.rdlc");
var path4 = System.Web.HttpContext.Current.Server.MapPath("~/StudentLib/Reports
/StudentReport.rdlc");
string path5 = System.Web.Hosting.HostingEnvironment.MapPath("~/StudentLib/Reports
/StudentReport.rdlc");
return path5;
}
}
正如您所看到的,我尝试了Server.MapPath
的所有组合,但它仍然在所有路径中添加了etcWebDemo
目录
当前路径:
"C:\\Users\\tom\\source\\repos\\WebDemo\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
"C:\\Users\\tom\\source\\repos\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
预期路径:
"C:\\Users\\tom\\source\\repos\\WebDemo\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
"C:\\Users\\tom\\source\\repos\\WebDemo\\StudentLib\\Reports\\StudentReport.rdlc"
我能知道为什么会这样吗
任何帮助都会很好。这对我来说很合适。。。看起来有一个解决方案文件夹WebDemo
,里面有一个项目文件夹,也称为WebDemo
。您是否在资源管理器中重新检查了它是否正确?i、 e.C:\Users\tom\source\repos\WebDemo\WebDemo\StudentLib\Reports
是否存在并包含您的文件?注意:库不会从库位置解析-构建时,库通常会复制到构建输出中,应用程序纯粹从那里运行;库有不同的路径这一事实是无关紧要的——这不是它的来源runtime@stom它在类库项目中的位置是毫不相关的;运行的不是类库,而是web应用程序,web应用程序从类库中获得所需内容的副本。如果您需要从web应用解析RDLC,最简单的方法就是将其作为web应用中的内容。如果它“属于”类库,并且应该在使用类库的任何地方都可用,那么您可能正在寻找嵌入式资源。但是,在使用时,它不再有物理路径。@stom取决于它名义上“属于”的位置;正如Damien所指出的,您可以使用嵌入式资源,但是访问这些资源的API是完全不同的(它不是一个文件,但您仍然可以为它获得一个流
),在我看来是正确的。。。看起来有一个解决方案文件夹WebDemo
,里面有一个项目文件夹,也称为WebDemo
。您是否在资源管理器中重新检查了它是否正确?i、 e.C:\Users\tom\source\repos\WebDemo\WebDemo\StudentLib\Reports
是否存在并包含您的文件?注意:库不会从库位置解析-构建时,库通常会复制到构建输出中,应用程序纯粹从那里运行;库有不同的路径这一事实是无关紧要的——这不是它的来源runtime@stom它在类库项目中的位置是毫不相关的;运行的不是类库,而是web应用程序,web应用程序从类库中获得所需内容的副本。如果您需要从web应用解析RDLC,最简单的方法就是将其作为web应用中的内容。如果它“属于”类库,并且应该在使用类库的任何地方都可用,那么您可能正在寻找嵌入式资源。但是,在使用时,它不再有物理路径。@stom取决于它名义上“属于”的位置;正如Damien所指出的,您可以使用嵌入式资源,但是访问这些资源的API是完全不同的(它不是一个文件,但您仍然可以得到一个流
)