Как использовать Server.mappath, когда httpcontext .current - это ничто

StackOverflow https://stackoverflow.com/questions/4742257

Вопрос

У меня есть код, который работает нормально, когда мне нужно удалить некоторые файлы изображений из каталога на моем веб -сервере:

Dim ImageURL As String = dsImages.Tables(0).Rows(iImgRow).Item("ImageURL")
Dim physicalName = Server.MapPath(ImageURL)
oUpload.DeleteFileFromServer(physicalName, iAdid, iImgID)

.. но я сталкиваюсь с проблемой, когда задача по обслуживанию, работающую в отдельном потоке с установленными интервалами, определяет, что такие файлы, как приведенные выше, необходимо удалить:

Dim ImageURL As String = dsImage.Tables(0).Rows(i - 1).Item("ImageURL")
Dim iImgID As Integer = dsImage.Tables(0).Rows(i - 1).Item("ImageId")
Dim physicalName As String = HttpContext.Current.Server.MapPath(ImageURL)
oUpload.DeleteFileFromServer(physicalName, iAdID, iImgID)

В этом последнем случае, Httpcontext.current.server.mappath (imageurl) имеет ценность ничего.

Есть ли способ получить полный путь для этого случая?

Это было полезно?

Решение

Предполагая, что пути являются относительными, то отдельный процесс не знает, чем они относится относительно, какое веб -приложение. В этом случае вам нужно будет хранить его в конфигурации и либо добавить их вместе, либо выполнить замену строки на ~/

Другие советы

А HttpContext.Current недоступен, когда ваш код работает внутри потока.

Чтобы иметь свой путь веб -приложения, вы можете использовать:

System.Web.Hosting.HostingEnvironment.MapPath("~/")

или вы можете просто найти его в HttpRuntime.AppDomainAppPath собственность (рекомендуется/быстрее).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top