静态成员的不一致行为

本文关键字:不一致 静态成员 | 更新日期: 2023-09-27 18:29:40

我在一个解决方案中有两个项目。一个C#类库项目封装了逻辑和一个用于查看的asp.net网站。逻辑如下:

public static class LoginHandler
{
   private static string _connectionString = Data Source=.;Initial Catalog=ASP;Integrated Security=True"
   private static SqlConnection Connection;
   static LoginHandler()
    {
        Connection = new SqlConnection(ConnectionString);
    }
     public static User StudentLogin(string username, string password)
    {
        using (Connection)
        {
         .........
        }
    }
}

一切都很顺利,直到我第二次调用StudentLogin方法。

我得到一个InvalidOperationException说Connection的ConnectionString属性未初始化。(通过监视窗口ConnectionString为")

我的问题是,由于静态成员只初始化一次(本例中为静态构造函数),ConnectionString属性如何更改?

或者,调用IDisposible.Dispose()的using语句会受到指责吗?

静态成员的不一致行为

或者,调用IDisposible.Dispose()的using语句会受到指责吗?

是的。每次调用StudentLogin方法时,都应该创建一个新的连接。你甚至不需要静态字段来保持对它的引用

public static User StudentLogin(string username, string password)
{
    using (var connection = new SqlConnection(ConnectionString))
    {
    }
}