重定向到另一个不能在javascript中工作的页面

时间:2010-12-10 08:00:41

标签: javascript asp.net-mvc session-timeout

嗨伙计们。在我的MVC应用程序中,我正在尝试重定向到登录页面,但它没有重定向,我收到“服务器错误”。

这是javascript:

<script type="text/javascript"> 
function keepAlive() { 
window.clearTimeout(window.sessionKeepAlive); 
window.sessionKeepAlive = window.setTimeout(function() { 

    if(confirm('refresh session?')) { 
        // submit coding required 
    } else { 
        //window.location="/Employee/~/Account/LogOn"
        //location.replace("/Employee/~/Account/LogOn");
        window.location.href = '<%= Url.Action( "Logout", "Account" ) %>'; 
    } 

}, <%= (Session.Timeout - 19) * 60 * 1000 %>); 
} 
keepAlive(); 
</script>

此外,我需要代码,如果用户按下“确定”按钮并继续。

2 个答案:

答案 0 :(得分:0)

确保您重定向到的位置包括协议,即

window.location.href = 'http://www.yoursite.tld/account/logout';

对于第二位,您可以对心跳页面进行ajax调用以刷新会话

// simplified
try {
    var xhr = new XMLHttpRequest();
} catch( e ) {
    var xhr = new ActiveXObject('Microsoft.XMLHTTP');
}

xhr.open( 'get', 'http://heartbeat/url', true );
xhr.send( null );

答案 1 :(得分:0)

就我而言,我更喜欢在

中添加web.config的完整路径链接
<appSettings>
    <add key="BaseURL" value="http://localhost/" />
</appSettings>

中的Global.asax中声明一个应用程序变量
protected void Application_Start()
{
    Application["BaseURL"] = System.Configuration.ConfigurationManager.AppSettings["BaseURL"];
}

现在我可以在整个网站中使用变量了。在你的情况下,你可以简单地使用

window.location.href = '<%=Application["BaseURL"]%>account/logout';