2014-10-01 56 views
1

我有一个使用ADO.net进行数据库调用的Webforms页面。当用户离开页面一段时间后,然后尝试保存,对数据库的调用失败。他必须刷新才能工作。会话超时后数据库调用失败

我的问题:在.NET Webforms中,是否有某种会导致数据库调用失败的会话超时?是否有需要在web.config中设置的超时属性?或者它可能是一个IIS的东西?

+1

您是否打开和关闭每个数据库操作的连接? – 2014-10-01 21:32:45

+0

你确实需要展示你的代码。您每次打电话到该数据库时最有可能没有打开/关闭数据库连接。如果你在会话状态下存储数据库连接信息,那么你做错了。 – NotMe 2016-07-21 21:09:52

回答

1

会话通常会在默认20分钟后过期,因此对会话的任何引用都将返回空值。如果你在访问这些值之前没有检查null,你会得到空引用异常。

如果您的表单的按钮点击事件没有访问Session对象中的任何内容,那么您应该没有问题。

0

在没有看到任何代码的情况下给你一个很好的答案有点困难。但我会尽力给你一些提示:

1)当会话超时,很明显,应用程序将无法访问该会话用户存储的值,因此,如果您正在使用用户会话存储数据库连接,连接字符串或类似的东西,是的,数据库连接将受到影响。

2)会话和身份验证是不同的事情,有不同的处理,例如,你可以让其中一个过期而另一个活动,你的代码需要照顾这两种情况。

3)是的,你可以通过改变web.config中的以下设置增加会话超时,但尽量不要存储与在会话数据库连接东西,最好是避免使用它们,但如果你需要尝试将小而简单的信息放入其中。

<configuration> 
    <system.web> 
    <sessionState mode="StateServer" timeout="30" /> 
    </system.web> 
</configuration>