Frage

Ich habe einig Code, funktioniert gut, wenn ich brauche einige Bilddateien aus einem Verzeichnis auf meinem Web-Server löschen:

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

.. aber ich laufe in ein Problem, wenn eine Wartungsaufgabe in festgelegten Intervallen in einem separaten Thread ausgeführt wird, die Dateien wie die oben Notwendigkeit bestimmt, gelöscht werden:

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 diesem letzteren Fall HttpContext.Current.Server.MapPath (ImageURL) hat einen Wert von Nichts.

Gibt es eine Möglichkeit den vollständigen Pfad für diesen Fall zu bekommen?

War es hilfreich?

Lösung

Unter der Annahme, dass die Pfade relativ sind dann der separate Prozess nicht weiß, was sie bezüglich zu, die Web-Anwendung. In diesem Fall müssen Sie es in der Config speichern und entweder hängen Sie die beide zusammen oder eine Zeichenfolge durchführen ersetzen auf ~ /

Andere Tipps

Das HttpContext.Current ist nicht verfügbar, wenn der Code in einem Thread ausgeführt wird.

Um Ihre Web-Anwendung Pfad haben können Sie entweder:

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

oder Sie können es einfach finden, in den HttpRuntime.AppDomainAppPath Immobilien (empfohlen / schneller).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top