Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego Asp.net MVC4 nie może używać bez plików cookie przechowywania stanu sesji SQL Server?

Jest błąd w Html.BeginForm() helper (ten, który nie przyjmuje żadnych argumentów) w przypadku użycia z cookieless="true" . Nie uwzględnia identyfikatora sesji podczas generowania adresu URL. Więc zamiast:

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

generuje:

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

Kiedy publikujesz w /home/index przekierowanie jest automatycznie wykonywane do /(S(kkt0zgbnuaoxad23ew33iod4)) przez ASP.NET. Przekierowanie oznacza, że ​​żądanie GET => Twoje działanie POST nigdy nie zostanie wykonane.

Jako obejście możesz napisać niestandardowy Html.BeginForm pomocnik do naprawy błędu:

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

a następnie użyj:

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

Jeśli chodzi o inne przeciążenia helpera BeginForm, powinny one działać poprawnie i generować odpowiednią akcję zawierającą identyfikator sesji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Użyj pól obliczeniowych z SELECT w klauzuli WHERE

  2. Rejestrowanie WSZYSTKICH zapytań w bazie danych SQL Server 2008 Express?

  3. Jak zmienić tabelę w SQL Server za pomocą instrukcji Alter — SQL Server / samouczek T-SQL, część 35

  4. Dodać kolumnę, jeśli nie istnieje we wszystkich tabelach?

  5. SQL ta sama jednostka między dwoma tabelami wymaga numerów porządkowych w 1 komórce