server.mappath null

时间:2011-06-11 00:32:27

标签: c# asp.net windows-services

  

可能重复:
  HttpContext.Current.Server null

我的ASP .NET解决方案中有三个项目:

  • 一个类库
  • 一个网络应用程序
  • 一个Windows服务

我的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的文件。请建议解决方案

由于

3 个答案:

答案 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

file path using C#

HttpContext.Current.Server null

在四个不同时间提出相同的基本问题并不会改变您无法使用Windows服务访问Web应用程序路径这一事实,而且Web应用程序无法知道您的服务所在。

使用配置文件来定义数据的存储位置并为两者提供相同的信息 - 或者为数据使用其他存储空间,例如具有已发布位置的数据库。

答案 2 :(得分:0)

最简单的解决方案可能是将xml文件的路径传递给该函数,而不是让函数本身足够巧妙地将其弄清楚 - 然后您的Web应用程序可以使用HttpContext方法,而Winforms应用程序将使用常规路径。对于WinForms或Windows服务,没有相应的MapPath方法。