2009-12-14 4 views
5

Im làm việc trên một dự án web trong ASP NET MVC 2.ASPXAUTH cookie không được lưu

Trong dự án này chúng tôi lưu trữ một số thông tin bên trong một cookie ecripted (cookie ASPXAUTH) để tránh sự cần thiết phải truy vấn db cho mọi yêu cầu.

Điều là mã cho phần này đột nhiên ngừng hoạt động.

Tôi đã xem xét các thay đổi được thực hiện đối với mã trên máy chủ kiểm soát nguồn cho bất kỳ điều gì có thể gây ra nó, tôi không tìm thấy gì. Tôi thậm chí quay trở lại một bản sao làm việc được biết đến (làm việc trên một số người khác PC, cùng một mã, vv) nhưng sau khi gỡ lỗi, có vẻ như các cookie .ASPXAUTH không được lưu nữa. Thay vào đó, cookie ASP.NET_SessionId đang được đặt ... (trước đây không phải là)

Tôi đã thay đổi tệp web.config để tắt sessionState. Điều này loại bỏ các ASP.NET_SessionId cookie được thiết lập, nhưng nó vẫn không lưu cookie auth.

Gần đây tôi đã cài đặt một số Cập nhật Microsoft Windows XP, nhưng người khác (máy tính cá nhân chạy ứng dụng tốt) cũng đã làm.

Sau khi googling, một số thông tin tôi tìm thấy chỉ ra một vấn đề với ngày hết hạn của cookie. Ether cus các pc didnt có đúng thời gian/ngày (điều này không phải là trường hợp) và những người khác cus của ngày hết hạn cookie được đặt sai. (Tôi đã kiểm tra và nó đang được đặt chính xác) ...

Sự cố vẫn tiếp diễn với các trình duyệt khác ngoài một trình duyệt đang sử dụng (Chrome) tôi đã thử với IE6.

Bất kỳ ý tưởng nào về lý do điều này xảy ra?

Tôi sẽ tiếp tục đăng bất kỳ thông tin hữu ích nào mà tôi có thể tìm thấy.

Xin cảm ơn trước.

Trả lời

8

Điều này có thể là cookie của bạn đã tăng quá lớn. Tôi chạy vào cùng một vấn đề. Nếu cookie của bạn trở nên quá lớn, nó chỉ sẽ không làm việc, tùy thuộc vào trình duyệt dĩ nhiên

MSDN

cookie thường được giới hạn ở 4096 byte và bạn không thể lưu trữ hơn 20 cookie cho mỗi trang web. Bằng cách sử dụng một cookie duy nhất có khóa con, bạn sử dụng ít hơn 20 cookie đó mà trang web của bạn được phân bổ. Ngoài ra, một cookie duy nhất chiếm khoảng 50 ký tự cho chi phí (thông tin hết hạn, vv), cộng với độ dài của giá trị mà bạn lưu trữ trong đó, tất cả đều được tính vào giới hạn 4096 byte. Nếu bạn lưu trữ năm khóa con thay vì năm cookie riêng biệt, bạn sẽ tiết kiệm được chi phí của các cookie riêng biệt và có thể tiết kiệm khoảng 200 byte.

What is the maximum size of a web browser's cookie's key?

what happens when cookies file exceeds maximum size?

+0

Bạn đóng đinh nó, chắc chắn là vấn đề về kích thước. Cảm ơn rất nhiều. :] –

0

Một cách dễ dàng để kiểm tra kích thước tập tin cookie của bạn là để gỡ lỗi và chạy đoạn mã sau

int cookieSize = System.Text.UTF8Encoding.UTF8.GetByteCount(faCookie.Values.ToString()); 

Nếu đây là vượt quá giới hạn thì bạn sẽ gặp phải vấn đề này.