当前位置:编程学习 > C#/ASP.NET >>

globel.asax在线统计问题

以下是globel.asax代码:

<%@ Application Language="C#" %>
<%@ Import  Namespace = "System.Data" %>
<%@ Import  Namespace = "System.Data.SqlClient" %>
<%@ Import  Namespace = "System.Data.Sql" %>

<script runat="server">

    string myConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    void Application_Start(object sender, EventArgs e) 
    {
        //在应用程序启动时运行的代码
        //string myConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection Conn = new SqlConnection(myConnStr);
        Conn.Open();//打开数据库
        SqlCommand comm = new SqlCommand("select * from Count where C_ID=1", Conn);
        SqlDataReader read = comm.ExecuteReader();
        if (read.Read())
        {
            int count =Convert.ToInt32(read["All_Count"]);
            Application["All_Count"] = count;
        }
        Conn.Close();//关闭数据库
        Application.Add("All_Count", 0);//在线人数初始化为0
        //Application["All_Count"] = 0;        
       
    }
    
    void Application_End(object sender, EventArgs e) 
    {
        //在应用程序关闭时运行的代码

    }
        
    void Application_Error(object sender, EventArgs e) 
    { 
        //在出现未处理的错误时运行的代码

    }

    void Session_Start(object sender, EventArgs e) 
    {
        //在新会话启动时运行的代码
        string pageurl = Request.Url.ToString();
        if (pageurl.EndsWith("Default.aspx")) 
        {
            Application.Lock();
            Application["All_Count"] = int.Parse(Application["All_Count"].ToString())+1;
            //string myConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection Conn = new SqlConnection(myConnStr);
            Conn.Open();
            SqlCommand Comm = new SqlCommand("update Count set All_Count =' " + Application["All_Count"].ToString() + " 'where C_ID=1", Conn);
            Comm.ExecuteNonQuery();
            Conn.Close();  
            Application.UnLock();
        }
    }

    void Session_End(object sender, EventArgs e) 
    {
        //在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式 
        //设置为 StateServer 或 SQLServer,则不会引发该事件。

    }
       
</script>


以上语句我用Label1.Text = "访问量:" + Application["All_Count"].ToString();在本地调试获取都正常的,为什么上传服务器后就出现:

未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误: 


行 16:     protected void Page_Load(object sender, EventArgs e)
行 17:     {
行 18:         Label1.Text = "访问量:" + Application["All_Count"].ToString();行 19:     }
行 20: }
 
--------------------编程问答-------------------- 學習了 --------------------编程问答-------------------- Application.Lock(); 
Application.UnLock(); 
放到Application_Start(object sender, EventArgs e)试试看 --------------------编程问答-------------------- int count =Convert.ToInt32(read["All_Count"]); 


read["All_Count"]) 改成application["ALL_Count"]试试
补充:.NET技术 ,  Web Services
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,