Asp.net 会话值在宿主环境中过期过快。如何在asp.nen中修复此问题

Asp.net 会话值在宿主环境中过期过快。如何在asp.nen中修复此问题,asp.net,Asp.net,在托管环境中,会话值过期过快。如何在asp.net中解决此问题您可以设置会话过期的超时时间 使用Web.config <system.web> <sessionState timeout="20" /> <!-- in minutes --> </system.web> 您不能对会话生存期做任何事情,因为即使您在web.config中更改该属性,主机配置文件将始终优先于此,如果他们有5分钟,无论您在web.config中是否有60

在托管环境中,会话值过期过快。如何在asp.net中解决此问题您可以设置会话过期的超时时间

使用Web.config

<system.web> 
      <sessionState timeout="20" /> <!-- in minutes -->
</system.web> 

您不能对会话生存期做任何事情,因为即使您在
web.config
中更改该属性,主机配置文件将始终优先于此,如果他们有5分钟,无论您在
web.config
中是否有60分钟的时间,会话的实时跨度始终为5分钟

您可以做的是更改为,并且只有在那里您才可以完全控制会话的直播时间,但是使用它有优点和缺点

或者,您可以使用缓存系统一起避免会话


不幸的是,这种情况在共享主机上经常发生,请记住,每次应用程序池刷新时,会话都会重置,而在共享主机上发生的频率更高。

使用IIS
您可以通过以下方式获得设置:打开IIS |网站属性| ASP.NET选项卡|编辑配置。。。(或编辑全局配置以更改多个站点)|状态管理选项卡。
在这里,您将看到一个标签为“会话超时(分钟)”的文本字段,默认值为20分钟。编辑该值。
有关详细信息,请访问:

在母版页中添加此小javascript,它将避免会话过期

<script type="text/javascript">
PingAspToKeepSession();
function PingAspToKeepSession() {
var url = "KeppSession.aspx";
var httpOb = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
httpOb.open("POST", url, true);
httpOb.send("");
window.setTimeout("PingAspToKeepSession();", 60000); // every 60 seconds

} 
</script>

PingAsptokepsession();
函数PingAspToKeepSession(){
var url=“KeppSession.aspx”;
var httpOb=window.XMLHttpRequest?new-XMLHttpRequest():new-ActiveXObject('Microsoft.XMLHTTP');
打开(POST),url,true);
httpOb.send(“”);
setTimeout(“pingasptokepsession();”,60000);//每60秒
} 

KeppSession.aspx页面可以是一个空页面。

我使用了它。但是会话值再次丢失@Shai无论您设置什么,
machine.config
设置将始终占主导地位,并将覆盖您放在那里的任何内容!@balexandre-另一种方法是:web.config覆盖machine.config是的,正如我所说的,使用SQL会话,它是唯一的通过完全控制会话活动范围的方式,它会稍微慢一点,因为它会询问数据库而不是内存,但它会一直工作。如果需要帮助设置它,请告诉我(首先按照我给您的链接)。@balexandre-not true:“本地配置设置会覆盖父配置文件中的设置。“来源:我在web.config文件中设置了超时。但会话值再次过期。这是我的web.config文件。如果应用程序池因某种原因重置,您的所有会话都将被擦除!”!如果使用SQL会话状态,则不是这样!