我的ASP .NET解决方案中有三个项目:
我的Web应用程序中有一个带有XML文件的文件夹。需要使用此XML文件填充类库函数的XMLreader。我添加了这个:
var reader = XmlReader.Create(HttpContext.Current.Server.MapPath("~/TestDevice/Data.xml"), settings);
从我们的应用程序调用这个功能的时候,它起作用。 当从Windows应用程序调用类库的这个函数时,我在HttpContext.Current.Server获得空引用,因为它在Windows应用程序中不可用。虽然适用于Windows和Web应用程序,但我不想提供硬编码路径。我可以使用一些不起作用来访问来自不同项目或任何替代server.mappath的文件。请建议解决方案
由于
答案 0 :(得分:9)
System.AppDomain.CurrentDomain.BaseDirectory
应该可以解决问题。
http://msdn.microsoft.com/en-us/library/system.appdomain.basedirectory.aspx
获取该基本目录 程序集解析器用于探测 组件。
答案 1 :(得分:2)
HttpContext.Current.Server.MapPath alternative in windows application
HttpContext.Current.Server null
在四个不同时间提出相同的基本问题并不会改变您无法使用Windows服务访问Web应用程序路径这一事实,而且Web应用程序无法知道您的服务所在。
使用配置文件来定义数据的存储位置并为两者提供相同的信息 - 或者为数据使用其他存储空间,例如具有已发布位置的数据库。
答案 2 :(得分:0)
最简单的解决方案可能是将xml文件的路径传递给该函数,而不是让函数本身足够巧妙地将其弄清楚 - 然后您的Web应用程序可以使用HttpContext方法,而Winforms应用程序将使用常规路径。对于WinForms或Windows服务,没有相应的MapPath方法。