Question

J'ai un code qui fonctionne très bien quand je dois supprimer des fichiers d'image à partir d'un répertoire sur mon serveur web:

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

.. mais je suis en cours d'exécution dans un problème quand une tâche de maintenance en cours d'exécution dans un thread séparé à intervalles détermine que les fichiers comme la nécessité ci-dessus à supprimer:

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)

Dans ce dernier cas, HttpContext.Current.Server.MapPath (ImageURL) a une valeur de rien.

Y at-il un moyen d'obtenir le chemin complet pour ce cas?

Était-ce utile?

La solution

Si l'on suppose que les chemins sont relatifs alors le processus distinct ne sait pas ce qu'ils sont liés à, quelle application web. Dans ce cas, vous aurez besoin de le stocker dans la configuration et soit ajouter les deux ensemble ou effectuer une chaîne de remplacement sur ~ /

Autres conseils

n'est pas disponible HttpContext.Current lorsque votre code est en cours d'exécution dans un thread.

Pour que votre chemin de l'application Web que vous pouvez soit utiliser:

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

ou vous pouvez simplement le trouver dans le HttpRuntime.AppDomainAppPath propriété (recommandé / plus rapide).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top