静态成员的行为不一致

时间:2016-01-08 13:53:11

标签: c# asp.net static

我在解决方案中有两个项目。一个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语句?

1 个答案:

答案 0 :(得分:2)

  

或者,是否使用了调用IDisposible.Dispose()的using语句?

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

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

    }
}