Tổng hợp câu trả lời từ @jrojo và @Maxam ở trên, với những gì tôi đang sử dụng.
Tôi đang sử dụng AWS DynamoDB làm cửa hàng phiên (ngoài phạm vi câu hỏi một chút, nhưng cho mẫu).
Add gói qua NuGet: Install-Package AWS.SessionProvider
Update Web.cấu hình có phím trong appSettings:
<add key="AWSAccessKey" value="XXX" />
<add key="AWSSecretKey" value="YYY" />
Và cung cấp phiên System.Web:
<sessionState timeout="20"
mode="Custom"
customProvider="DynamoDBSessionStoreProvider">
<providers>
<add name="DynamoDBSessionStoreProvider"
type="Amazon.SessionProvider.DynamoDBSessionStateStore, AWS.SessionProvider"
AWSProfilesLocation=".aws/credentials"
Table="ASP.NET_SessionState"
Region="us-east-1"
/>
</providers>
</sessionState>
Thêm bất cứ điều gì để phiên trong global.asax trên phiên đầu:
void Session_Start(object sender, EventArgs e) {
HttpContext.Current.Session.Add("somethingToForceSessionIdToStick", string.Empty);
}
Xác minh qua thêm điều này vào dao cạo của bất kỳ trang nào. Làm mới trang đó, sau đó mở một cửa sổ ignito và nhìn thấy một phiên khác nhau:
@HttpContext.Current.Session.SessionID
BobsYourUncle
nó thua phiên ngay cả khi bạn đặt một cái gì đó vào nó. Khóa máy bên trong web.config là điều duy nhất giải quyết vấn đề đó –
Chỉ khi có một trang web liên quan. Và nếu bạn đọc nhận xét của OP trong một trong các câu trả lời, bạn sẽ thấy rằng việc thêm một mục vào biến phiên làm việc đã khắc phục được sự cố. – Maxam
Nhà cung cấp dịch vụ lưu trữ của tôi không có trang web và việc thêm nội dung vào phiên không khắc phục được. Tôi vẫn mất nó sau vài phút - ngay cả khi tôi có nhiều thứ trong phiên (người dùng đã đăng nhập, giỏ hàng của anh ấy, ...) Tôi đã thử với 2 nhà cung cấp dịch vụ lưu trữ –