2010-03-08 31 views
8

Tôi đang làm việc trên một trang web có yêu cầu chia sẻ phiên giữa ứng dụng cms và ứng dụng cửa hàng trực tuyến trên cùng một miền ví dụ.Chia sẻ trạng thái phiên giữa 2 ứng dụng ASP.NET sử dụng SQL Server

mydomain.com 

store.mydomain.com 

Tôi đã thực hiện một số tiến bộ với nó và nó hoạt động về xây dựng địa phương của tôi giữa

localhost/cms 

localhost/store 

Về cơ bản tôi đã làm những gì được đề xuất trong này Điều

http://blogs.msdn.com/toddca/archive/2007/01/25/sharing-asp-net-session-state-across-applications.aspx

và hack các TempGetAppID Stored Procedure để trả lại id ứng dụng tương tự (1). Điều này dường như hoạt động vì nó tạo ra các phiên có id như 'abv5d2urx1asscfwuzw3wp4500000001', đó là những gì tôi mong đợi.

Vấn đề của tôi là khi tôi triển khai nó vào môi trường thử nghiệm của chúng tôi, nó tạo ra một phiên mới khi tôi điều hướng giữa 2 trang web. Vì vậy, khi tôi bắt đầu một phiên trên trang web cms, nếu tôi điều hướng đến cửa hàng, nó sẽ tạo một phiên mới. Chúng được thiết lập thành 2 trang web khác nhau trong IIS7.

Trong file web.config cho cả hai trang web, và các yếu tố đều giống nhau và như sau (trừ thông tin nhạy cảm)

Có ai có một ý tưởng tại sao sức mạnh này không được làm việc? Tôi đang chia sẻ Xác thực biểu mẫu trên 2 trang web và hoạt động tốt. Bất kỳ trợ giúp hay ý tưởng sẽ được đánh giá rất nhiều!

Rất cám ơn

Dave

Trả lời

7

Có vẻ như vấn đề chúng tôi gặp phải là miền cookie phiên đã được đặt khác nhau trên 2 ứng dụng. Điều này có nghĩa là mỗi ứng dụng tạo ra sessionId riêng của nó.

Chúng tôi đã thêm <httpCookies domain=".ourdomain.co.uk" /> vào web.config của chúng tôi và dường như đã giải quyết được. Cảm ơn sự giúp đỡ của hte, hy vọng điều này sẽ giúp người khác trong tương lai.

+1

Điều này phải được thực hiện trong cả hai tập tin web.config. Cảm ơn rất nhiều, điều này đã giải quyết được vấn đề của chúng tôi. – kzfabi

6

Persist tất cả dữ liệu phiên trên SQL-server, sử dụng phiên ID như chìa khóa. Sau đó, sử dụng cookie chứa ID phiên chỉ đến .mydomain.com để cookie sẽ có sẵn trên cả hai tên miền phụ.

Điều này article at 15 seconds bao gồm chủ đề và thậm chí hiển thị kỹ thuật chia sẻ phiên trên các tên miền hoàn toàn khác nhau.

+0

Đó là cách chia sẻ Cookie trên các tên miền, chứ không phải Phiên. Ngay cả khi bạn bằng cách nào đó thiết lập các tập tin cookie được dưới cùng một tên miền các ứng dụng khác nhau. Đây là trang giải quyết vấn đề này trên: http://www.velocityreviews.com/forums/t108519-session-cookie-not-accessible-across-sub-domains.html –

+0

Xin cảm ơn, nhưng đó là điều đặc biệt đối với cổ điển. Tôi chắc chắn có một số cách để đạt được điều này trong asp.net mà không cần phải nhận phiên từ cookie. Tuy nhiên nếu tôi sai tôi chắc chắn sẽ cố gắng thực hiện một cái gì đó như thế này trên dự án asp.net của tôi. – Dave

+0

Cảm ơn fan nissan Tôi sẽ xem xét điều đó. – Dave

Các vấn đề liên quan