2011-01-20 91 views
13

Tôi có một số mã mà hoạt động tốt khi tôi cần phải xóa một số tập tin hình ảnh từ một thư mục trên máy chủ web của tôi:Làm thế nào để sử dụng Server.MapPath khi HttpContext .Current là Không có gì

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

..nhưng tôi chạy vào một vấn đề khi một nhiệm vụ bảo trì chạy trong một thread riêng biệt trong khoảng thời gian thiết lập xác định rằng các tập tin như các nhu cầu trên cần được xóa:

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) 

trong trường hợp sau này, HttpContext.Current.Server.MapPath (imageurl) có giá trị Không có gì.

Có cách nào để có được đường dẫn đầy đủ cho trường hợp này không?

+0

Bản sao có thể có của [Làm cách nào tôi có thể sử dụng Server.MapPath() từ global.asax?] (Http://stackoverflow.com/questions/935940/how-can-i-use-server-mappath-from-global -asax) –

Trả lời

1

Giả sử rằng các đường dẫn tương đối thì quá trình riêng biệt không biết chúng có liên quan đến cái gì, ứng dụng web nào. Trong trường hợp này, bạn sẽ cần phải lưu trữ nó trong cấu hình và nối cả hai vào nhau hoặc thực hiện chuỗi thay thế trên ~/

+7

Tìm thấy câu trả lời hay hơn tại: http://stackoverflow.com/questions/935940/how-can-i-use-server-mappath-from-global-asax - nhưng tôi không biết cách tốt nhất để đóng câu hỏi này. –

+0

Đẹp, đã học được điều gì mới ở đó. Tôi nghĩ rằng bạn chỉ để lại câu hỏi để chết bây giờ. – Hawxby

16

HttpContext.Current không khả dụng khi mã của bạn đang chạy trong chuỗi.

Để có con đường ứng dụng web của bạn, bạn có thể sử dụng:

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

hoặc bạn chỉ có thể tìm thấy nó trong HttpRuntime.AppDomainAppPath tài sản (khuyến cáo/nhanh hơn).