httpcontext.current.server.mappath Object reference not set to an instance of an object
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");
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
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");