2011-11-23 24 views
9

Để gỡ lỗi ứng dụng ASP.NET của tôi, tôi đã tạo một lớp có tên là MessageHandling.cs. Tại thời điểm này nó là một mẫu đơn nhưng tôi muốn nó là một ví dụ cho mỗi yêu cầu.Ví dụ đơn lẻ của một lớp theo yêu cầu HTTP

Lớp mssqlDb của tôi điền vào lớp MessagesHandling với các thông báo như: 'Db connected', 'Data inserted' và các nội dung tương tự. Sau khi tất cả các sự kiện của trang apsx được xử lý, lớp MessageHandling được đọc bởi createFile.apsx.cs trong sự kiện Page_LoadComplete(). Tất cả các lỗi và tin nhắn sẽ được hiển thị cho người dùng.

Tại thời điểm này, hệ thống hoạt động để gỡ lỗi. Vấn đề tại thời điểm này là MessageHandling không được dọn sạch sau khi yêu cầu được gửi đi và các lỗi cũng được hiển thị trên trình duyệt thứ hai mà không làm bất cứ điều gì. Tôi cũng muốn có thể sử dụng hệ thống này để hiển thị tin nhắn cho người dùng cuối như: "Blog được tạo".

Các cơ bản của vấn đề của tôi là như sau:
Class A tạo Class B
Class C đọc Class B

Các singleton không làm việc vì nó không phải là mỗi người dùng/phiên/yêu cầu. Vì vậy, tôi cần một phương pháp khác.

+0

Bạn sẽ khởi tạo singleton lần đầu tiên ở đâu? –

+0

mssqlDb là người đầu tiên sử dụng nó. Đó là nơi bắt đầu. – h3rj4n

Trả lời

4

HttpContext.Current là đối tượng HttpContext cho yêu cầu hiện tại. Nó có một tài sản ItemsIDictionary từ object đến object. Bạn có thể đặt bất cứ điều gì bạn thích trong đó, và nó sẽ được gắn với yêu cầu hiện tại.

-1

Bạn có thể kiểm tra hàm tạo của singleton để xem đối tượng đó có tồn tại trong phiên không? Nếu không, hãy tạo nó và sau đó trả lại?

private Singleton() 
{ 
    // do whatever 
} 

public Singleton GetMySingleton() 
{ 
    if(HttpContext.Current.Items["MyCustomSingleton"] == null) 
     HttpContext.Current.Items["MyCustomSingleton"] = new Singleton(); 
    // 

    return (Singleton)HttpContext.Current.Items["MyCustomSingleton"]; 
} 
+0

Đoạn mã đó sẽ lưu vào bộ nhớ cache mỗi phiên, không phải theo yêu cầu. – Bertvan

+0

ya, xấu của tôi. không thấy phần đó – Miles

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