我目前在asp.net vb中支持基于Web的应用程序。下面的这段代码用于检查会话,并在会话期满后自动注销用户。另外,我有一个安全窗口,该窗口会在成功登录后弹出,并在刷新或关闭此弹出窗口时注销用户。

问题是,每当javascript调用"MasterPage is Undefined"中的函数时,我都在说MasterPage.master.vb时出错。错误发生在代码MasterPage.LogOn()MasterPage.GetClientSession()等上。

下面是我在MasterPage.master文件中的javascript,函数LogOn()GetClientSession()和其他函数在MasterPage.master.vb文件中。
仅在将系统部署到测试服务器上时才会出现此问题,并且在我的本地PC上运行正常。

任何可以帮助的人。非常感谢。

<script type="text/javascript" language="JavaScript">
var SessionTime = 0;
var uname = "";
var status = "";
var clientSession = 0;
var spyOn;
function logon()
{
    MasterPage.LogOn();
    clientSession = MasterPage.GetClientSession().value;
    spyOn = MasterPage.spyOn().value;
    setTimeout("CheckSession()", 60000);
    if (!spyOn)
    {
        var spyWin = open('spy.aspx','UserSecurity','width=250,height=100,left=2000,top=2000,status=0,scrollbar=no,titlebar=no,toolbar=no');
    }
}
function CheckSession()
{
    SessionTime = SessionTime + 1;
    if (SessionTime >= clientSession)
    {
        var uname = document.getElementById("ctl00_hdnUser").value;
        var status = document.getElementById("ctl00_hdnStatus").value;
        var x = MasterPage.SessionEnded(uname, status).value;
        alert(x);
        window.open("Login.aspx","_self");
    }
    setTimeout("CheckSession()", 60000);
}

function RorC()
{
    var top=self.screenTop;
    if (top>9000)
    {
        window.location.href="logout.aspx" ;
    }
}

function LogMeOut()
{
  window.location.href="logout.aspx" ;
}

function ShowTime()
{
    var dt = new Date();
    document.getElementById("<%= Textbox1.ClientID %>").value = dt.toLocaleTimeString();

    window.setTimeout("ShowTime()", 1000);
    MasterPage.CheckSession(CheckSession_CallBack);

}
 window.setTimeout("ShowTime()", 1000);

function CheckSession_CallBack(response)
{
    var ret = response.value;
    if (ret == "")
    {
        isClose = true;
        window.location.href="login.aspx"
    }
}
</script>

最佳答案

可以通过在支持IIS7的<httphandlers>上添加处理程序(<system.web>部分下的<handlers><system.webserver>部分下的web.config)并将IIS管理器上的应用程序池从“集成”设置为“经典”来解决此问题。 。

10-04 15:57