Pregunta

Tengo un código que funciona bien cuando tengo que borrar algunos archivos de imagen desde un directorio en mi servidor web:

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

.. pero yo estoy corriendo en un problema cuando una tarea de mantenimiento que se ejecuta en un hilo separado a intervalos fijos determina que los archivos como la necesidad de arriba para ser eliminado:

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)

En este último caso, HttpContext.Current.Server.MapPath (ImageURL) tiene un valor de nada.

¿Hay una manera de obtener la ruta completa para este caso?

¿Fue útil?

Solución

Suponiendo que las rutas son relativas, entonces el proceso separado no sabe lo que son en relación con que la aplicación web. En este caso, tendrá que almacenarlo en la configuración y, o bien añadir los dos juntos o realizar una cadena de reemplazo en ~ /

Otros consejos

La HttpContext.Current no está disponible cuando el código se ejecuta dentro de un hilo.

Para que su ruta de la aplicación web se puede utilizar:

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

o simplemente puede encontrar en la HttpRuntime.AppDomainAppPath propiedad (recomendado / rápido).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top