ログインリダイレクトURLにクエリ文字列パラメータが追加されているプロダクションアプリケーションでこの問題が発生しました。これを再現するには、新しいMVCプロジェクトを作成します(私はMVC2とMVC3 R2の両方でテストしました)。 HomeController
では、次のアクションを追加しますASP.NET MVC UnauthorizedResultログインURLに不要なパラメータを追加する
public ActionResult Break()
{
return new HttpUnauthorizedResult();
}
起動アプリケーションをして/home/break?a=1&b=2
を打ちます。だから、これは当然/Account/LogOn?ReturnUrl=/home/break%3fa%3d1%26b%3d2
にリダイレクトする必要がありますが、それは実際にもURLの最後に要求されたパラメータ(&a=1&b=2
)を追加します。
ですが、なぜでしょうか? ReturnUrl
のエンコードされたURLには必須のパラメータがあるため、これらのパラメータを追加する必要はありません。私はそれが本番アプリケーションでは何かになると思っていましたが、上記の手順に従えば、デフォルトのMVCアプリケーションもこれを再現します。これを解決する方法について考えてみてください。
ありがとうございました。今私が考えていることは意味があります、それはちょうど私をとても興味深いものにしました。私はそれが設計されているので、これを残しておきます。 – TheCloudlessSky