httpcontext.current.server.mappath Object reference not set to an instance of an object

只愿长相守 提交于 2019-11-26 22:49:38

问题


I am using the following code within a class:

string filePath = HttpContext.Current.Server.MapPath("~/email/teste.html");

The file teste.html is in the folder

But when it will open the file the following error is being generated:

Object reference not set to an instance of an object.


回答1:


Don't use Server.MapPath. It's slow. Use this instead, HttpRuntime.AppDomainAppPath. As long as your web site is running, this property is always available to you.

Then use it like this:

string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "email/teste.html");



回答2:


if the code is not running from within a thread is executing a httprequest then HttpContext.Current is null (for example when you method is called via BeginInvoke) - see http://forums.asp.net/t/1131004.aspx/1 .

You can always use HttpRuntime see http://msdn.microsoft.com/en-us/library/system.web.httpruntime.aspx




回答3:


If there is no HttpContext (e.g. when the method is called via BeginInvoke, as Yahia pointed out), the call to HttpContext.Current.Server.MapPath() must fail. For those scenarios, there's HostingEnvironment.MapPath() in the System.Web.Hosting namespace.

string filePath = HostingEnvironment.MapPath("~/email/teste.html");


来源:https://stackoverflow.com/questions/6861368/httpcontext-current-server-mappath-object-reference-not-set-to-an-instance-of-an

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