2010-02-15 71 views
0

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

这是因为许多用户会登录,做他们需要做的事情,但是当他们做其他事情时离开网站而不注销。它会超时,但这种联系似乎仍然是开放的。然后,我们必须联系负责运行的服务器的负责人,让他为我们重新设置它。

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

非常感谢,

迈克

+0

你是否想重置IIS? – brian 2010-02-15 18:32:05

+1

离开网页的用户究竟如何与数据库连接保持打开状态相关?您提出的解决方案并不是一个好的方案 - 最好是试着了解真正的问题并寻求帮助。 – markt 2010-02-15 18:38:13

回答

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(),但这又是一个坏主意。

4

我不认为加入一个按钮的网站重置是正确的选择。

你应该仔细研究为什么连接没有关闭。

如果您使用的是SqlConnections,然后将它们包装在一个using语句中,这将在您完成后处置连接。

下面是一个例子:

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

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

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

MSDN参考:ConfigurationManager Class

+0

我认为这一点是他不允许在网站上更改_anything_而不经过一个缓慢的正式流程来涉及系统管理员。他希望能够跳过所有这些。我并不是说这是一个好主意,但这是我认为他的追求。 – 2010-02-15 20:23:31

+0

我的解决方案非常完美,它可以让您创建一个按钮,按需让您的网站重新启动。 – 2010-02-16 01:37:42

+0

DV的WTF我的解决方案完全可以解决OP的问题,这与几乎所有其他解决方案不同。 – 2010-02-16 16:58:01