ASP.Net会话(SQL Server)在10分钟后超时,无论web.config中说明了什么

时间:2015-04-16 11:04:31

标签: c# asp.net sql-server session

我有一个ASP.net网站和一个SQLServer会话状态模式的会话。我在web.config中声明超时应该是一小时,但它会在10分钟内超时。

  <sessionState allowCustomSqlDatabase="true" mode="SQLServer"      
  sqlConnectionString="objConnState"
  timeout="60"/>

我可以在表格中看到会话条目: enter image description here 读: enter image description here

值得一提的是,整个事情落后一小时(我认为因为它在程序和默认值中使用getutcdate(),而getutcdate()比我的时间晚一个小时,不知道这是否相关或不

是否有可能在IIS中的某处或站点,服务器和覆盖我的web.config设置的sql之间的任何地方默认超时?

可以使用向导正确设置ASPState表。

  <?xml version="1.0"?>
<configuration>
    <appSettings>
        <some irrelivant app keys
        .
        .
        .
        >
    </appSettings>
    <connectionStrings>
        <add name="objConnRemote" connectionString="..."
        <add name="objConnLocal" connectionString="..."
        <add name="objConnState" connectionString=".."
        <add name="objConnTest" connectionString="..."
    </connectionStrings>
    <system.web>
        <sessionState allowCustomSqlDatabase="true" mode="SQLServer"      
      sqlConnectionString="objConnState"
      timeout="60"/>

        <customErrors mode="Off"/>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, />
                <add assembly="System.Net, Version=4.0.0.0, Culture=neutral, /></assemblies>
        </compilation>
        <machineKey decryptionKey="somekey,IsolateApps" validationKey="someotherkey,IsolateApps"/>
        <pages>
            <controls>
                <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
            </controls>
        </pages></system.web>
    <system.web.extensions>
        <scripting>
            <webServices>
                <!--was the reason for the java pop up alert on the  auto fill -->
                <jsonSerialization maxJsonLength="50000000"/>
            </webServices>
        </scripting>
    </system.web.extensions>
    <system.webServer>

        <modules runAllManagedModulesForAllRequests="true" />
        <httpErrors errorMode="Detailed"/>
        <asp scriptErrorSentToBrowser="true"/>
        <defaultDocument enabled="true">
            <!-- this line enables default documents for a directory -->
            <files>
                <clear/>
                <!-- removes the existing default document list -->
                <add value="index.aspx"/>
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

编辑: 我刚发现一些很奇怪的东西。因为我最初很难,所以它并没有神奇地将超时设置为10分钟。相反,它会每隔10分钟以相等的间隔踢我一次 - 每小时6次。如果我在15:01或15:09登录无关紧要,或者如果我有效,或者不是它会清除变量并在15:10将其发送回/ login /每次登录...

AAAND最终编辑: 谢谢大家参与这次讨论。事实证明,我的系统管理员(我上面的那个人)有一个每10分钟运行一次的脚本,用于检查用户是否应该被踢#34;节省资源。显然,脚本没有考虑新的表和数据库,并且当它不应该时也清除它。希望当我们停止/改变脚本它应该工作,到目前为止它的工作。

1 个答案:

答案 0 :(得分:0)

SQL Server具有默认连接超时的设置。打开SSMS,连接到您的服务器,(在对象资源管理器树中)右键单击您的服务器,属性。在“高级”页面下的“网络”部分下,查看“远程登录超时”设置。默认值为10(分钟)。尝试使用不同的值,如30或60.

警告:这会为所有用户设置默认超时。当您增加此设置时,服务器将保持连接更长时间(使用更多RAM)。因此,如果此服务器不仅仅是您的Web服务器共享,您可能想要研究如何“扩展”您的应用程序的数据库。