2011-12-11 86 views
0

我开发在asp.net & C#中的网站。我对javaScript不是很熟悉,但我正在使用一点点的东西。为了创建一个弹出窗口,我用下面的JavaScript代码:子窗口重定向

<script type="text/javascript" language="javascript"> 
function OpenCallUpdatePop(popUrl) { 
CallUpdatePop = window.open(popUrl, 'callUpPop', 'toolbar=no, location=yes, scrollbars=yes, width=900, height=700') 
    setTimeout('CallUpdatePop.scroll(0,100)', 1000) 
} 
</script> 

参数popUrl由下面的C#代码填充:

string updateUrl = string.Format("UpdatePopUpPage.aspx"); 
ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>OpenCallUpdatePop('" + updateUrl + "');</script>"); 

我有一个在页面上设置一个计时器会话超时前几秒钟,以便重定向到注销页面,其中FormsAuthentication.SignOut();发生。该Response.Redirect的()的注销页面不从子窗口工作,所以我尝试了JavaScript函数:

function closeThis() { 
self.close() 
} 

这是一个从下面的C#代码锐叫:

protected void timerLogOut_Tick(object sender, EventArgs e) 
{ 
    ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<scriptlanguage=JavaScript>closeThis();</script>"); 

} 

的页面不会关闭,而是重定向到了登录页面的默认页面,但我希望它重定向到注销页面。 如何我只是造成孩子页面,只是接近或重定向到注销页面或任何其他页面?另一种可能可以到web.config默认页面的设置从C#代码更改,使得页面重定向到我想去的地方,这可能吗?

+0

当您的页面重定向时,哪些代码会导致重定向?这听起来像是你在*会话超时之后发送*,它会自动重定向到登录 - 而不是你想要的。 BTW - 使用String.Format是最奇怪的地方。 – sq33G

回答

0

最有可能的问题是,你没有可用匿名访问和会话实际上超时页面导航才能完成登出页面。

发生这种情况时,你必须在web.config中的窗体身份验证模块指定的loginUrl,ASP.Net会自动将用户重定向到登录页面。

为了检测这种行为,我们增加了一个特殊的查询字符串参数,让我们知道,如果用户到达登录页面由于自动重定向或不:

<authentication mode="Forms"> 
    <forms name=".MYAUTH" loginUrl="default.aspx?reauth=1" protection="All" path="/" slidingExpiration="true" timeout="60" /> 
    </authentication> 

可以确保注销页面总是通过添加以下到web.config中访问:

<location path="logout.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

如果注销页面的目的就是向用户提供关于发生了什么信息,你实际上可以离开登出页面进行完全和公正依赖于自动重定向t querystring参数在返回到登录页面时向用户提供消息。例如,在登录页面中:

<script language="javascript" type="text/javascript"> 
    <!-- 
    if (window.location.search != "") { 
     if (window.location.search.indexOf("reauth=1") != -1) { 
      alert("Your login credentials have expired. Please log in again to continue."); 
     } 
    } 
    --> 
</script>