server.mappathの使用方法httpcontext .currentが何もない場合
-
12-10-2019 - |
質問
Webサーバーのディレクトリから画像ファイルを削除する必要がある場合に正常に動作するコードがいくつかあります。
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) 何もない価値があります。
このケースのフルパスを取得する方法はありますか?
解決
パスが相対的であると仮定すると、個別のプロセスは、それらが何に関連しているかを知りません。どのWebアプリケーションです。この場合、構成に保存し、2つを一緒に追加するか、〜/に文字列置換を実行する必要があります。
他のヒント
HttpContext.Current
コードがスレッド内で実行されている場合、使用できません。
Webアプリケーションパスを使用するには、次のいずれかを使用できます。
System.Web.Hosting.HostingEnvironment.MapPath("~/")
または、単にそれを見つけることができます HttpRuntime.AppDomainAppPath
プロパティ(推奨/高速)。
所属していません StackOverflow