我在ASP.Net中构建一个网站,当它第一次加载时,需要执行浏览器检查。UpdatePanel在infine循环中等待会话变量
我这样做使用document.DocumentMode请不要告诉我关于其他方法,我知道他们,他们不工作。
好的。
所以我有我的母版页加载时调用以下javascript。这会关闭并在另一个页面上设置会话变量。我遇到的问题是,有时页面陷入无限循环。我可以通过首先打开我的网站,然后将其重新发布到服务器来重新发布它。当我刷新页面,它会启动进入无限循环。它但是也可以做它随机,并解决它的唯一方法是关闭浏览器,然后再次打开它..
function myFunc() {
var xhr = new XMLHttpRequest();
var docmod = document.documentMode;
xhr.open("GET", "setResponseHeader.aspx?mode=" + docmod);
xhr.send();
var mySesh ="<%= Session["sessResp"] %>";
if (mySesh == "")
{
__doPostBack('<%= AJAXUpdPan %>', '');
}
}
我在想什么是以某种方式放置一个计数器,将触发后说5失败的回发和停止,但我的JavaScript技能不达标从头开始..任何人都可以帮助吗?
编辑 的JavaScript被称为如下
<body onload="myFunc()">
<form runat="server">
<div class="page">
这里是更新面板
<asp:ScriptManager ID="ScriptManager1"
runat="server" />
<asp:UpdatePanel ID="AJAXUpdPan" runat="server">
<ContentTemplate>
<p align="right">
You are currently logged in as <asp:Label ID="lbl_CurrentUser" runat="server" Text="User"></asp:Label></p>
</ContentTemplate>
</asp:UpdatePanel>
它是工作..这似乎只是有时没有。我我开始怀疑这是使用会话变量的问题。当我发布该网站时,是否会销毁该会话或某种效果?我认为会话有时可能会超时,从而导致随机问题..我已将会话超时从30分钟变为3600分钟。将明天测试以查看它是否有效。尽管发布问题仍然让我感到困惑。
代码只需要在页面构建时运行。它仅仅意味着采用documentMode,通过queryString将其发送到设置变量的setResponseHeader.aspx。与此同时,updatePanel正在刷新。一旦会话变量被设置,那么进程就会中断。我不知道您发布的内容 – Matt
我很抱歉有错误的答案!我有一个模式问题:这个Java脚本代码是否在AJAXUpdPan中?我如果AJAXUpdPan mySesh值以外的功能将永远不会刷新,即使您更改Session [“sessResp”]时将处理回发。 – IceN
检查编辑的一些更多细节。它目前按预期工作。但是,如果我发布网站的更新,它会发生故障。 – Matt