Domanda

Ho qualche codice che funziona bene quando ho bisogno di eliminare alcuni file di immagini da una directory sul mio server web:

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

.. ma io sono in esecuzione in un problema quando un intervento di manutenzione in esecuzione in un thread separato a intervalli prestabiliti determina che i file, come la necessità di cui sopra da eliminare:

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)

In quest'ultimo caso, HttpContext.Current.Server.MapPath (ImageURL) ha un valore di nulla.

C'è un modo per ottenere il percorso completo per questo caso?

È stato utile?

Soluzione

Supponendo che i percorsi sono relativi allora il processo separato non sanno quello che sono relative al, quale applicazione web. In questo caso è necessario memorizzarlo nella config e sia accodare i due insieme o eseguire una stringa sostituire il ~ /

Altri suggerimenti

Il HttpContext.Current non è disponibile quando il codice viene eseguito all'interno di un thread.

Per avere il vostro percorso di applicazione web è possibile utilizzare:

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

oppure si può semplicemente trovare nella HttpRuntime.AppDomainAppPath immobili (consigliato / più veloce).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top