là nó an toàn để gọi là phương pháp từ trong web trang
Chỉ khi phương pháp này là reentrant. Ví dụ với sql:
public static User GetUser(string username)
{
using (var connection = new SqlConnection(ConnectionString))
using (var command = connection.CreateCommand())
{
connection.Open();
command.CommandText = "select name, username from users where username = @username";
command.Parameters.AddWithValue("@username", username);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
return new User
{
Username = username,
Name = reader.GetString(0),
}
}
}
return null;
}
}
Và gọi trong trang ASPX của bạn:
var user = SomeClass.GetUser(Session["username"]);
Và không HttpContext.Current luôn trở lại bối cảnh hiện nay người tiêu dùng, vì vậy là nó an toàn để gọi đó là từ static phương pháp để có được người dùng hiện tại phiên?
Có, HttpContext.Current có thể được sử dụng một cách an toàn để tải ngữ cảnh HTTP hiện tại. Nhưng tôi sẽ đề nghị bạn không gọi HttpContext.Current trong phương pháp truy cập DB của bạn. Chỉ cần vượt qua những gì cần thiết như là đối số để trang ASPX của bạn khi gọi phương thức sẽ đọc một cách an toàn phiên và vượt qua các tham số cần thiết.
Ghi chú và tư vấn cá nhân: không sử dụng các phương pháp tĩnh để truy cập dữ liệu. Mã gọi bằng phương pháp tĩnh gần như không thể kiểm tra đơn vị.
Nguồn
2010-02-25 16:35:29
Cảm ơn câu trả lời của bạn! Vậy GetUser-Method của bạn có an toàn cho chủ đề không? Một câu hỏi khác: Kết nối được đóng ngay cả khi có sự trở lại trong khối sử dụng? –
Không, kết nối không được đóng. Nó được trả về hồ bơi kết nối ADO.NET để tái sử dụng. –