2013-05-05 40 views
8

Tôi có một trung tâm SignalR. Khi máy khách ngắt kết nối, tôi muốn thực hiện một thao tác tệp. Để làm điều đó, tôi cần truy cập vào Server.MapPath.HttpContext null trong tập tin Signalr Hub

Tuy nhiên, vì lớp Trung tâm của tôi không phải là .aspx hoặc Dịch vụ web, không có yêu cầu nào cũng không có số HttpContext.

Tôi nghĩ đến việc ủy ​​nhiệm công việc IO cho trình xử lý yêu cầu HTTP, nhưng tôi không thể tạo WebRequest với URI tương đối và tôi cần có khả năng triển khai giải pháp ở các vị trí khác nhau.

Làm cách nào để có thể sử dụng đường dẫn cục bộ để sử dụng trong các lớp System.IO từ SignalR?

System.IO.Directory.GetCurrentDirectory() cung cấp cho tôi vị trí của quy trình công nhân IIS.

Trả lời

14

Bạn có thể thử như sau

var path = (System.Web.HttpContext.Current == null) 
        ? System.Web.Hosting.HostingEnvironment.MapPath("~/") 
        : System.Web.HttpContext.Current.Server.MapPath("~/"); 

trong đó sử dụng các hostingenvironment để lấy đường dẫn của ứng dụng thực hiện.

+0

saravanan, điều này đã làm được !! Thanks heaps – zaitsman

+0

Điều này làm việc, nhưng tôi tin rằng bạn chỉ có thể sử dụng 'HostingEnvironment.MapPath', nó hoạt động trong mọi trường hợp. Nghĩa là, kiểm tra 'null' và dòng' Server.MapPath' có thể được gỡ bỏ ở đây. –

+0

Có, cảm ơn bạn đã cập nhật – Saravanan

Các vấn đề liên quan