Httpcontext.current.server.mappath Ссылка на объект не установлена в экземпляр объекта
Я использую следующий код внутри класса:
string filePath = HttpContext.Current.Server.MapPath("~/email/teste.html");
Файл teste.html находится в папке
Но когда он откроется, в файле создается следующая ошибка:
Ссылка на объект не установлена в экземпляр объекта.
Ответы
Ответ 1
Не используйте Server.MapPath. Это медленно. Используйте это вместо HttpRuntime.AppDomainAppPath
. Пока ваш веб-сайт работает, это свойство всегда доступно вам.
Затем используйте его следующим образом:
string filePath = Path.Combine(HttpRuntime.AppDomainAppPath, "email/teste.html");
Ответ 2
если код не запущен из потока, выполняется httprequest
, а затем HttpContext.Current
- null
(например, когда вы вызываете метод через BeginInvoke
) - см. http://forums.asp.net/t/1131004.aspx/1.
Вы всегда можете использовать HttpRuntime
см. http://msdn.microsoft.com/en-us/library/system.web.httpruntime.aspx
Ответ 3
Если нет HttpContext
(например, когда метод вызывается через BeginInvoke
, как указал Яхия), вызов HttpContext.Current.Server.MapPath()
должен завершиться неудачно. Для этих сценариев существует HostingEnvironment.MapPath()
в пространстве имен System.Web.Hosting
.
string filePath = HostingEnvironment.MapPath("~/email/teste.html");