带有HttpContext和数据库连接的静态方法
本文关键字:静态方法 数据库连接 HttpContext 带有 | 更新日期: 2023-09-27 18:17:11
我刚得到一个项目,有一些使用静态方法的核心类。
它是一个c#项目,具有反映javascript的一些方法的接口。在这个接口中,有很多调用使用HttpContext的静态方法,并从数据库(实际上只有一个访问数据库)获取数据,比如这样(一些方法内部有一些逻辑):
public static string UsrId {
get{
try {
return HttpContext.Current.Session["usrid"].ToString();
} catch(NullReferenceException) {
return ServiceVars.GuestId;
}
}
}
我的问题是:
这是一个不好的做法吗?这样做的缺点(和优点)是什么?
我在某处读到,使用数据库连接的静态方法对于高流量站点来说是不好的,因为它会使请求排队。这是真的吗?或者我不应该担心静态方法中的数据库连接?
和HttpContext内部的静态方法,它是坏的,为什么?
这里糟糕的是NullReferenceException
的捕获。千万别那样做。
应该先检查是否为空:
public static string UsrId {
get{
var userId = HttpContext.Current.Session["usrid"];
if (userId == null) { return ServiceVars.GuestId;}
return userId .ToString();
}
}
同样,您可能提到的问题不是静态方法或HttpContext
的问题。这是使用Session
状态的问题。