在我们的 ASP.NET 网站中,其中一个页面中有一些选项卡。每个选项卡代表不同的内容,从一个选项卡移动到另一个选项卡会重新加载整个页面。如果我目前在其中一个选项卡中并在那里闲置大约一分钟或更长时间,然后转到另一个选项卡,则只会出现一个白色的空白屏幕。(在浏览器中没有页面源代码信息)。
可悲的是,在较低的测试环境中,同一网站根本无法重现同样的问题。问题仅出现在网站的生产版本中。
是否有我应该更改的 IIS 设置或 web.config 设置来解决此问题。因为我相信相关网页的源代码不会成为原因。
在我们的 ASP.NET 网站中,其中一个页面中有一些选项卡。每个选项卡代表不同的内容,从一个选项卡移动到另一个选项卡会重新加载整个页面。如果我目前在其中一个选项卡中并在那里闲置大约一分钟或更长时间,然后转到另一个选项卡,则只会出现一个白色的空白屏幕。(在浏览器中没有页面源代码信息)。
可悲的是,在较低的测试环境中,同一网站根本无法重现同样的问题。问题仅出现在网站的生产版本中。
是否有我应该更改的 IIS 设置或 web.config 设置来解决此问题。因为我相信相关网页的源代码不会成为原因。
这可能是因为会话超时已达到结束会话的限制。
在这种情况下,您有三种可能的解决方案:
第一的
您可以尝试编辑web.config位于应用程序根目录的文件以延长会话超时。尝试这样的事情:
<sessionState mode="StateServer" timeout="500">
</sessionState>
根据MSDN,您最多可以设置timeout分钟525,601(1 年)。
第二
如果它不起作用并且您可以访问,您可以尝试在 IIS 上编辑超时:
打开 IIS,单击应用程序池,为您的应用程序选择应用程序池。
右键单击它,选择属性。
在“性能”选项卡中,将空闲超时设置为“空闲 ..... 分钟后关闭工作进程”所需的分钟数。
重要提示:除此之外,您必须如上所述在 web.config 中设置超时。
第三
您可以创建一个ajax要在后台执行的函数,以防止会话过期:
function keepSessionAlive(mod) {
mod.open("GET", "blank.html", true);
mod.onreadystatechange = function() {
if (mod.readyState == 4) {
document.getElementById("#blankDiv").innerHTML = mod.responseText;
}
};
mod.send(null)
}
setInterval('keepSessionAlive()', 100000);
而已。希望能帮助到你。
如果在 Firefox 中,我会打开 chome 开发工具或 firebug。如果在萤火虫中,我会查看网络和控制台选项卡,并从网络角度查看实际发生的情况。应该很容易查看开发中的流量并与生产进行比较。我猜它们不一样,它会立即为您指明正确的方向。
如果您想像中间人一样观察流量,Fiddler 也是一种选择。
您是否使用任何自定义 http 模块?我们可以看看页面源aspx和后面的代码吗?当我使用 elmah 但在完全不同的情况下,它发生在我身上。
其他可能是由于其他人指出的会话问题。希望有帮助。