sql >> データベース >  >> RDS >> Sqlserver

Asp.netMVC4がCookieなしのSQLServerセッション状態ストレージを使用できない理由

    Html.BeginForm()にバグがあります cookieless="true"とともに使用する場合のヘルパー(引数を取らないもの) 。 URLを生成するときにセッションIDは考慮されません。代わりに:

    <form action="/(S(kkt0zgbnuaoxad23ew33iod4))/home/index" method="post">
    

    生成されます:

    <form action="/home/index" method="post">
    

    /home/indexに投稿するとき /(S(kkt0zgbnuaoxad23ew33iod4))へのリダイレクトが自動的に行われます。 ASP.NETによる。リダイレクトとは、GETリクエスト=>POSTアクションがヒットしないことを意味します。

    回避策として、カスタムのHtml.BeginFormを作成できます。 バグを修正するためのヘルパー:

    public static class FormExtensions
    {
        public static IDisposable MyBeginForm(this HtmlHelper htmlHelper)
        {
            var rawUrl = htmlHelper.ViewContext.HttpContext.Request.RawUrl;
            var formAction = htmlHelper.ViewContext.HttpContext.Response.ApplyAppPathModifier("~/") + rawUrl;
            var builder = new TagBuilder("form");
            builder.MergeAttributes(new RouteValueDictionary());
            builder.MergeAttribute("action", formAction);
            builder.MergeAttribute("method", HtmlHelper.GetFormMethodString(FormMethod.Post), true);
            htmlHelper.ViewContext.Writer.Write(builder.ToString(TagRenderMode.StartTag));
            var form = new MvcForm(htmlHelper.ViewContext);
            return form;
        }
    }
    

    次に使用します:

    @using (Html.MyBeginForm())
    {
        ...
    }
    

    BeginFormヘルパーの他のオーバーロードに関する限り、それらは正常に機能し、セッションIDを含む適切なアクションを生成する必要があります。




    1. SQL クエリに 2 つの from 句を含めるにはどうすればよいですか?

    2. データベースの問題に挿入...(不正な文字コーディング)PHP / MYSQL

    3. usingステートメントを使用してMySQL接続を閉じることはできますか?

    4. Spring Integrationとは何ですか?