Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tại sao Asp.net MVC4 không thể sử dụng bộ lưu trữ trạng thái phiên SQL Server Session

Có một lỗi trong Html.BeginForm() helper (không sử dụng bất kỳ đối số nào) khi được sử dụng với cookieless="true" . Nó không tính đến id phiên khi tạo url. Vì vậy, thay vì:

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

nó tạo ra:

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

Khi bạn đăng lên /home/index chuyển hướng được tự động thực hiện đến /(S(kkt0zgbnuaoxad23ew33iod4)) bởi ASP.NET. Chuyển hướng có nghĩa là yêu cầu GET => hành động ĐĂNG của bạn sẽ không bao giờ được thực hiện.

Để giải quyết vấn đề, bạn có thể viết một Html.BeginForm tùy chỉnh người trợ giúp để sửa lỗi:

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

và sau đó sử dụng:

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

Đối với các quá tải khác của trình trợ giúp BeginForm, chúng sẽ hoạt động tốt và tạo ra hành động thích hợp có chứa id phiên.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kiểm tra mức độ tương thích của cơ sở dữ liệu trong SQL Server bằng T-SQL

  2. Cách chèn hàng trong Bảng SQL Server bằng cách chỉnh sửa GUI hàng bảng - Hướng dẫn SQL Server / TSQL Phần 101

  3. Tạo chế độ xem từ các bảng con có liên quan

  4. Dự án cơ sở dữ liệu để thả cơ sở dữ liệu trước khi triển khai?

  5. Phân vùng theo năm so với các bảng riêng biệt có tên Data_2011, Data_2010, v.v.