यह वेब पेजों
सिर्फ अगर इस विधि reentrant है भीतर से कि विधि कॉल करने के लिए सुरक्षित है। एसक्यूएल के साथ उदाहरण:
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;
}
}
और अपने ASPX पेज में कहते हैं:
var user = SomeClass.GetUser(Session["username"]);
और HttpContext.Current हमेशा वर्तमान उपयोगकर्ताओं संदर्भ वापसी करता है, इसलिए इसे सुरक्षित कॉल करने के लिए से वह यह है कि मौजूदा सत्र प्राप्त करने के लिए स्थिर विधियां?
हां, HttpContext.Current वर्तमान HTTP संदर्भ प्राप्त करने के लिए सुरक्षित रूप से उपयोग किया जा सकता है। लेकिन मैं आपको अपने डीबी एक्सेस विधि में HttpContext.Current को कॉल नहीं करने का सुझाव दूंगा। बस तर्क के रूप में आवश्यकतानुसार पास करें ताकि विधि को कॉल करते समय आपका एएसपीएक्स पृष्ठ सत्र को सुरक्षित रूप से पढ़े और आवश्यक पैरामीटर पास कर सके।
टिप्पणी और व्यक्तिगत सलाह: डेटा एक्सेस के लिए स्थिर तरीकों का उपयोग न करें। स्थैतिक विधियों का उपयोग करके कॉलिंग कोड इकाई परीक्षण के लिए असंभव है।
स्रोत
2010-02-25 16:35:29
आपके उत्तर के लिए धन्यवाद! तो आपका GetUser-Method थ्रेड-सुरक्षित है? एक और सवाल: उपयोग-ब्लॉक के भीतर वापसी होने पर भी कनेक्शन बंद है? –
नहीं, कनेक्शन बंद नहीं है। इसे पुन: उपयोग के लिए एडीओ.NET कनेक्शन पूल में वापस कर दिया गया है। –