tl; dr:Menu từ MvcSiteMapProvider đôi khi không tự hiển thị sau khi ứng dụng trở lại trực tuyến, mặc dù mã chạy và trình đơn hiển thị sau khi làm mới trang.MvcSiteMapProvider chưa sẵn sàng trên trang kết xuất, vấn đề bộ nhớ cache?
Tôi đang sử dụng MvcSiteMapProvider trong dự án ASP.NET MVC 3 và đôi khi sau khi chuyển ứng dụng từ ngoại tuyến sang trực tuyến (bằng cách chèn một tệp App_Offline.htm
vào thư mục gốc của máy chủ và xóa) trình đơn sẽ không hiển thị bất kỳ thứ gì cho đến khi trang được làm mới.
Tôi đang sử dụng DynamicNodeProvider tùy chỉnh để truy vấn các mục menu từ cơ sở dữ liệu và sau đó hiển thị menu. Trong khi gỡ lỗi, tôi có thể thấy rằng mã này thực sự đang chạy trước khi tải trang nhưng không có menu nào được hiển thị trên trang. Tôi đã đặt bộ nhớ cache thành vài giờ và đang sử dụng khóa bộ nhớ cache tùy chỉnh để cho phép vô hiệu sau một số hành động nhất định.
Rất tiếc, tôi không thể nhận được lỗi này để tái tạo một cách nhất quán. Tuy nhiên, tôi có thể tuy nhiên, để nó tái sản xuất thường xuyên hơn nếu tôi thêm một giấc ngủ ở đầu DynamicNodeProvider - nó sẽ thất bại khoảng 60-70% thời gian với một giấc ngủ 30 + giây. Dự đoán tốt nhất của tôi cho đến nay là nó phải làm với cơ chế lưu bộ nhớ đệm vì đặt thời lượng bộ nhớ cache của tôi là 0 dường như để làm cho nó không có vấn đề gì và menu luôn bật lên. Tuy nhiên, thật khó để nói chắc chắn, vì vấn đề là khó khăn để pin xuống. Để nó ở 0 sẽ không phải là một giải pháp có thể chấp nhận được vì hiệu suất kéo.
Nguyên nhân gốc rễ của vấn đề này có thể là gì? Có ai nhìn thấy hành vi này trước hoặc có cách giải quyết không?
Tôi rất mong được viết lại! – Joshua
Lập kế hoạch để bắt đầu vào đầu năm 2013. Và bây giờ, tôi đang nguyền rủa tôi đã không đi theo con đường "mương thư viện cơ bản". – maartenba
có liên quan đến vấn đề mà đôi khi trình đơn hiển thị các nút sai không? – 360Airwalk