Làm thế nào tôi có thể sử dụng phương thức server.mappath trong lớp thư viện lớp C#, hoạt động như BusinessLayer của tôi cho My ASP.NET WEbsiteServer.Mappath trong C# classlibrary
Trả lời
Bằng cách gọi nó?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Đảm bảo bạn thêm tham chiếu vào lắp ráp System.Web.
Bạn nên tham khảo System.Web và gọi:
HttpContext.Current.Server.MapPath(...)
Có lẽ bạn có thể trừu tượng này như một sự phụ thuộc và tạo ra một IVirtualPathResolver. Bằng cách này, các lớp dịch vụ của bạn sẽ không bị ràng buộc với System.Web và bạn có thể tạo một triển khai khác nếu bạn muốn sử dụng lại logic của mình trong một công nghệ giao diện người dùng khác.
Bạn có thể lấy đường dẫn cơ sở bằng cách sử dụng mã sau và nối thêm đường dẫn cần thiết của bạn với mã đó.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
Sử dụng số System.Web.Hosting.HostingEnvironment.MapPath() này.
HostingEnvironment.MapPath("~/file")
Tự hỏi tại sao không ai đề cập đến ở đây.
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath (path);
Kiến trúc, System.web không nên được giới thiệu trong Lớp logic nghiệp vụ (BLL). Sử dụng BLL vào cấu trúc giải pháp để theo nguyên tắc riêng biệt của mối quan tâm để tham khảo System.Web là một thực hành không tốt. BLL không nên tải/chạy trong ngữ cảnh Asp.net. Vì lý do bạn nên xem xét việc sử dụng System.AppDomain.CurrentDomain.BaseDirectory
thay vì System.Web.HttpContext.Current.Server.MapPath
tôi nên nói rằng assembly system.web không tồn tại trong .net framework 4 – Arash
Giải pháp tồi tệ nhất! Điều gì sẽ xảy ra nếu chúng ta cần sử dụng các lớp Business Layer ngoài ngữ cảnh HTTP? –
Đây là câu trả lời đúng http://stackoverflow.com/questions/12294458/asp-net-mvc-4-use-server-mappath-in-business-layer –