提问人:Coding_ninja 提问时间:5/27/2023 更新时间:5/29/2023 访问量:55
WCF 会话在 20 分钟后超时,即使我正在使用应用程序 [ASP.NET]
WCF session timeout after 20 minutes even if I'm using the application [ASP.NET]
问:
即使我正在使用它,我的应用程序也会在 20 分钟后超时。 代码如下:
<sessionState mode="Custom" timeout="20" />
现在,我知道解决它的一种方法是增加超时值。但我的要求是,当有人使用它时,应用程序永远不会过期。 有没有合适的替代解决方案?将超时值设置为一个非常长的值似乎有点激烈。配置 IIS 对我来说不是一个选项。
答:
0赞
QI You
5/29/2023
#1
您的模型是“自定义”。它使用自定义会话状态存储提供程序存储会话状态数据。如:
<configuration>
<connectionStrings>
<add name="OdbcSessionServices"
connectionString="DSN=SessionState;" />
</connectionStrings>
<system.web>
<sessionState
mode="Custom"
customProvider="OdbcSessionProvider">
<providers>
<add name="OdbcSessionProvider"
type="Samples.AspNet.Session.OdbcSessionStateStore"
connectionStringName="OdbcSessionServices"
writeExceptionsToEventLog="false" />
</providers>
</sessionState>
</system.web>
</configuration>
同样,我建议使用其他两种模式,它们在存储会话方面相对较好。
状态服务器模式,其中会话状态存储在称为 ASP.NET 状态服务的单独进程中。这可确保在重新启动 Web 应用程序时保留会话状态,并且该会话状态可供 Web 场中的多个 Web 服务器使用。例如,存储在名为“Test1”的计算机上。
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=Test1:42424"
cookieless="false"
timeout="20"/>
</system.web>
</configuration>
SQLServer 模式将会话状态存储在 SQL Server 数据库中。这可确保在重新启动 Web 应用程序时保留会话状态,并且该会话状态可供 Web 场中的多个 Web 服务器使用。如
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>
评论
0赞
Coding_ninja
5/29/2023
嗨,我无法更改模式,因为我的整个应用程序都是基于它配置的。还有其他解决方法吗?
0赞
QI You
5/30/2023
它实际上存储在服务器的硬盘驱动器上,从而实现更持久的存储。
0赞
Coding_ninja
5/30/2023
嗨,模式在我的应用程序中正确配置,这不是问题,我什至无法更改它。请提出任何替代方案
0赞
QI You
5/30/2023
因为您无法修改配置文件和代码以及模型。您可以尝试“timeout=-1”。这意味着它永远不会超时。
评论