0

OK、ここで明らかな何かが欠けているに違いありませんが、どこにも答えが見つかりません。

ローカルマシンの.Net4でFormsAuthenticationを使用しています。保護されたページにアクセスしようとすると、.Netはlogin.aspxにリダイレクトし、クエリ文字列にReturnUrlを追加します。例:/pages/security/login.aspx?ReturnUrl=%2fPages%2fFriends.aspx

正しい詳細でログインすると、ReturnUrlにリダイレクトされません。代わりに、web.configdefaultUrlパラメーターにあるものにリダイレクトされます。

私のweb.configは次のようになります。

<authentication mode="Forms">
        <forms loginUrl="/pages/security/login.aspx" defaultUrl="/default.aspx" timeout="129600" />
    </authentication>

リダイレクト行は次のとおりです。

FormsAuthentication.RedirectFromLoginPage(userID.ToString(), rememberMe);

web.configのdefaultUrlに何を入れても、リダイレクト先になります。実際、これは、確認したときにFormsAuthenticaton.GetRedirectUrlにある値でもあります。.NetはReturnUrlを無視しているようですが、理由はわかりません。

何か案は?

4

1 に答える 1

0

OK、これは私の愚かな見落としでしたが、これらの症状を経験している他の人に役立つかもしれないので、「解決策」をあなたと共有したいと思いました.

クエリ文字列が削除された理由は、検索エンジンの重複 URL を回避するための努力の一環として、フォーム アクションを小文字に変換する行がマスター ページにあったためです。その行はフォーム アクションを更新していましたが、クエリ文字列を追加していませんでした。

そのため、ポストバックでクエリ文字列の値が失われている場合は、フォーム タグのアクション値にそのクエリ文字列が含まれていることを確認してください。

于 2012-08-18T12:20:05.213 に答える