带有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内部的静态方法,它是坏的,为什么?

带有HttpContext和数据库连接的静态方法

这里糟糕的是NullReferenceException的捕获。千万别那样做。

应该先检查是否为空:

public static string UsrId {
    get{
        var userId = HttpContext.Current.Session["usrid"];
        if (userId == null) { return ServiceVars.GuestId;}
        return userId .ToString();
    }
}

同样,您可能提到的问题不是静态方法或HttpContext的问题。这是使用Session状态的问题。