如何使用按钮重置站点内的asp.net网站?

时间:2010-02-15 18:29:00

标签: c# asp.net

我正在使用ASP.NET 2.0网站。我遇到的问题是它查询数据库以获取它在屏幕上显示的信息,但数据库偶尔会到达有太多打开连接的地方。这导致网站拒绝在该数据库错误之后为任何人登录的尝试。

这是因为许多用户将登录,执行他们需要做的事情,但是在他们做其他事情时让网站继续运行而不退出。它会超时,但连接似乎仍然是开放的。然后,我们必须联系负责其运行的服务器的人员并让他为我们重置它。

我已经查看了,在发出请求和查询之后,对数据库的所有连接似乎都被关闭了。所以,我想要做的是添加一个按钮,点击后将重置网站,而不是每次都要打电话给负责服务器的人。然后我们可以在需要时重置它。那么,如何使用站点内某个页面上的按钮重置ASP.NET 2.0网站?

非常感谢,

麦克

3 个答案:

答案 0 :(得分:6)

  

在请求之后,对数据库的所有连接似乎都已关闭

这里的问题是“似乎”这个词。例如,这个代码“似乎”会关闭连接,但在某些情况下它不会:

var conn = new SqlConnection("MyConnection");
var cmd = new SqlCommand("query string here", conn);

cmd.ExecuteNonQuery();
conn.Close():

我可以听到你说,“当然它关闭了连接。难道你没有看到'conn.Close();'线?”问题是有些事情可能会阻止conn.Close()行执行。

相反,你需要做这样的事情:

using (var conn = new SqlConnection("MyConnection"))
using (var cmd = new SqlCommand("query string here", conn))
{
    cmd.ExecuteNonQuery();
}

该代码将始终关闭连接。

如果你非常认真地“重置”应用程序,你可以尝试拨打Environment.Exit(),但是再次:这是一个坏主意。

答案 1 :(得分:4)

我不认为添加按钮来重置网站是正确的选择。

你应该真正研究为什么连接没有关闭。

如果你正在使用SqlConnections,那么将它们包装在using语句中,这将在你完成后处理连接。

以下是一个例子:

using (SqlConnection connection = new SqlConnection(connectionString))
{
   connection.Open();
   // Do work here; connection closed on following line.
}

答案 2 :(得分:0)

要回答您的实际问题,重置ASP.NET站点的最简单方法是修改web.config,这将导致站点重新加载。

因此,如果我想要实现一个按钮,我将在应用程序设置中设置一个无意义的值(可能是上次重置的日期时间),然后使用ConfigurationManager保存更改。 / p>

MSDN参考:ConfigurationManager Class