HttpContext.Current.Server null

与世无争的帅哥 提交于 2019-12-17 16:59:21

问题


I have a windows service which is using a method from a class library with same asp.net solution. in class library, I have a method with following line:

 reader = XmlReader.Create(HttpContext.Current.Server
             .MapPath("~/TestDevice/Data.xml"), settings);

When control comes to this line. I get exception. I tried to debug the code and found that when service tries to access this method then HttpContext.Current.Server is null. What is alternative syntax.

I tried to access this class library method from web application and it works fine.

Please suggest solution.


回答1:


HttpContext.Current is returning null because your Windows Service is not running under the umbrella of IIS or some other web server provder.

However, you can find the executing path of your service using reflection:

System.Reflection.Assembly.GetExecutingAssembly().Location

^ should return the path of the executing service..




回答2:


This method works much better:

string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;



回答3:


It could be that when you are using windows service, you are no longer running a web app, therefore HttpContext and web server is not available. Try using System.IO.File for mapping, see whether that takes you to the correct directory.

Edit

private String yourFullPath = System.IO.Path.GetFullPath("/YourDirectory") + @"\";


来源:https://stackoverflow.com/questions/6304532/httpcontext-current-server-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!