Windows应用程序中的HttpContext.Current.Server.MapPath替代方案

时间:2011-06-10 18:03:18

标签: asp.net c#-4.0

Windows应用程序中“HttpContext.Current.Server.MapPath”的替代方法是什么,它在Web应用程序中使用。我应该在Windows应用程序中使用什么来访问文件。

[编辑] 窗口应用程序中的替代是什么?

reader = XmlReader.Create(
            @"D:\EnviroTrack\EnviroTracker.Web\TestDevice\Data.xml", settings);

请建议

2 个答案:

答案 0 :(得分:3)

您可以使用普通的Path方法。 MapPath有助于将虚拟路径转换为Web服务器上的物理路径。在winforms中不需要这种转换。您可能正在寻找Assembly.GetExecutingAssembly().Location,它返回正在执行的程序集的位置。

编辑 - 您更新的问题应该在Winform中运行。 XmlReader.Create有很多重载,其中一个是(string, XmlReaderSettings)。这是您在问题中使用的超载。您可以使用相同的方法,但如果您愿意,可以使用不同的目录。

reader = XmlReader.Create(@"C:\Data.xml", settings);

要获取正在执行的程序集的目录,可以使用AppDomain.CurrentDomain.BaseDirectory。所以它可能是这样的:

reader = XmlReader.Create(AppDomain.CurrentDomain.BaseDirectory + "Data.xml", settings);

答案 1 :(得分:0)

我认为Assembly.GetExecutingAssembly.Location会返回exedll名称,暂时没有尝试过此功能,因此无法确定。

Application.StarupPath可能会完成这项工作。