gpt4 book ai didi

c# - ASP.NET 中的静态方法

转载 作者:太空狗 更新时间:2023-10-29 17:48:54 25 4
gpt4 key购买 nike

我对 asp.net-pages 中的静态方法有点困惑。例如。如果我创建一个静态数据库方法来从数据库中获取用户数据(类似于 UserDBHandler.getUser() 之类的东西)怎么办 - 从网页中调用该方法是否安全?不是为每个页面调用创建一个新线程吗?HttpContext.Current 是否总是返回当前用户上下文,那么从静态方法调用它来获取当前用户 session 是否安全?

谢谢

最佳答案

is it safe to call that method from within web-pages

仅当此方法为 reentrant 时.使用 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;
}
}

然后在您的 ASPX 页面中调用:

var user = SomeClass.GetUser(Session["username"]);

And does HttpContext.Current always return the current-users context, so is it safe to call that from static methods to get the current-users session?

是的,可以安全地使用 HttpContext.Current 来获取当前的 HTTP 上下文。但我建议您不要在数据库访问方法中调用 HttpContext.Current 。只需将需要的内容作为参数传递,以便您的 ASPX 页面在调用该方法时将安全地读取 session 并传递所需的参数。

备注和个人建议:不要使用静态方法进行数据访问。使用静态方法调用代码几乎不可能进行单元测试。

关于c# - ASP.NET 中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2335658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com