Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa Asp.net MVC4 tidak dapat menggunakan penyimpanan status SQL Server Session tanpa cookie?

Ada bug di Html.BeginForm() helper (yang tidak menerima argumen apa pun) saat digunakan dengan cookieless="true" . Itu tidak memperhitungkan id sesi saat membuat url. Jadi, alih-alih:

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

itu menghasilkan:

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

Saat Anda memposting ke /home/index pengalihan secara otomatis dibuat ke /(S(kkt0zgbnuaoxad23ew33iod4)) oleh ASP.NET. Pengalihan berarti permintaan GET => tindakan POST Anda tidak akan pernah berhasil.

Sebagai solusinya, Anda dapat menulis Html.BeginForm khusus pembantu untuk memperbaiki bug:

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;
    }
}

lalu gunakan:

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

Sejauh menyangkut kelebihan lain dari helper BeginForm, mereka harus bekerja dengan baik dan menghasilkan tindakan yang tepat yang berisi id sesi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan catatan pertama dari setiap grup dari hasil yang diambil dengan menggunakan grup dengan perintah

  2. Memasukkan data objek besar ke Salesforce.com dari SQL Server

  3. Menggunakan Penyimpanan Intel Optane untuk SQL Server

  4. Waktu kueri SQL habis saat dijalankan dari C#, cepat di SQL Server Management Studio

  5. Kerangka Entitas/Linq ke SQL:Lewati &Ambil