1

我有一个 login.aspx。其中有一个重定向页面的代码。

Server.Transfer(string.Format("~/admin/FillUserExtraInfo.aspx?UserName={0}",Server.UrlEncode(loginInitial.UserName)));

它确实有效,然后在 FillUserExtraInfo.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        // retrieve the username from the querystring
        userName = this.Request.QueryString["UserName"];
        string mode = UsefulFunctions.GetOperatingMode();
        if (mode == ConfigurationSettingValues.OperatingModes.Backup.ToString())
            FormsAuthentication.RedirectToLoginPage();

但是 FormsAuthentication.RedirectToLoginPage() 不起作用。程序继续向前执行,直到 Page_Load 结束,然后最终返回登录。

更新:在此期间,我发现 url bacomeshttp://localhost:53906/Login.aspx?ReturnUrl=%2fLogin.aspx%3fAction%3dLogout

最后。但我得到一个错误:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.

我的 web.config:

<authentication mode="Forms">
        <forms loginUrl="Login.aspx" protection="All" timeout="30" requireSSL="false" slidingExpiration="true" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
    </authentication>

我的问题:

  1. 为什么 FormsAuthentication.RedirectToLoginPage() 不起作用?
  2. 如何处理我遇到的错误?

谢谢你。

第二次更新:我在 FormsAuthentication.RedirectToLoginPage() 之后添加了 Response.End() 然后它可以工作但异常仍然存在。

4

1 回答 1

0

尝试使用 Response.Redirect("url", false) 而不是 Server.Transfer()。

Response.Redirect("~/admin/FillUserExtraInfo.aspx?UserName=" + Server.UrlEncode(loginInitial.UserName) + "", false);

参考

于 2012-04-12T13:25:15.907 回答