Tôi cần sử dụng Server.MapPath()
để kết hợp một số đường dẫn tệp mà tôi lưu trữ trong web.config
.Tôi có thể sử dụng Server.MapPath() từ global.asax như thế nào?
Tuy nhiên, kể từ Server.MapPath()
dựa trên HttpContext hiện tại (tôi nghĩ), tôi không thể thực hiện việc này. Khi cố gắng sử dụng phương pháp, mặc dù phương thức "có sẵn", tôi nhận được ngoại lệ sau:
Thao tác máy chủ không khả dụng trong ngữ cảnh này.
Có phương pháp nào khác có thể ánh xạ thư mục tương đối gốc của web chẳng hạn như ~/App_Data/
đến đường dẫn vật lý đầy đủ chẳng hạn như C:\inetpub\wwwroot\project\App_data\
?
Bất kỳ cảnh báo nào đối với kỹ thuật này? –
Không. Nếu bạn kích hoạt Reflector, bạn sẽ thấy rằng Server.MapPath và Request.MapPath cuối cùng gọi VirtualPath.MapPath mà cuối cùng gọi là HostingEnvironment.MapPath. Tất cả đều kết thúc ở cùng một nơi. HostingEnvironment.MapPath cắt ngang người trung gian. –
+1 điều này cố định một dự án mã nguồn mở đã được làm việc cho tôi sau đó chỉ dừng lại khởi tạo do HttpContext.Current.Server thổi lên cho nó không có một bối cảnh vì một lý do nào đó. Chuyển sang điều này đặt nó trở lại thuyền buồm trơn tru. –