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バコムを見つけましたhttp://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. 発生したエラーに対処するにはどうすればよいですか?

ありがとうございました。

2番目の更新:FormsAuthentication.RedirectToLoginPage()の後にResponse.End()を追加しましたが、機能しますが、例外はまだあります。

4

1 に答える 1

0

Server.Transfer() ではなく、Response.Redirect("url", false) を使用してみてください。

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

参照

于 2012-04-12T13:25:15.907 に答える