2011-09-27 32 views
6

Tôi đang sử dụng dịch vụ WCF (thông qua thuộc tính WebGet).Phiên truy cập trong dịch vụ WCF từ WebHttpBinding

Tôi đang cố gắng để truy cập vào phiên từ dịch vụ WCF, nhưng HttpContext.Current là null

tôi thêm AspNetCompatibilityRequirements và chỉnh sửa web.config nhưng tôi vẫn không thể truy cập phiên.

Có thể sử dụng WebGet và Session cùng nhau không?

Cảm ơn bạn!

Trả lời

5

Có, điều đó là có thể. Nếu bạn chỉnh sửa web.config:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 

và thêm AspNetCompatiblityRequirements, các HttpContext.Current nên có sẵn.

Kiểm tra lại mọi thứ một lần nữa, có thể bạn đã đặt thuộc tính ở vị trí không đúng (giao diện thay vì lớp?).

+2

Tôi có thuộc tính, nhưng không có phiên. WebHttpBinding có tương thích với phiên không? –

4

Dịch vụ RESTfull có phiên?

Xem thảo luận tuyệt vời ở đây: Can you help me understand this? "Common REST Mistakes: Sessions are irrelevant"

http://javadialog.blogspot.co.uk/2009/06/common-rest-mistakes.html (điểm 6)

http://www.peej.co.uk/articles/no-sessions.html

Trích từ Paul Prescod:

phiên là không thích hợp.

Không cần một khách hàng phải "đăng nhập" hoặc "bắt đầu kết nối". Xác thực HTTP được thực hiện tự động trên mọi thư. Ứng dụng của khách hàng là người tiêu dùng của các tài nguyên , không phải là dịch vụ. Do đó không có gì để đăng nhập! Giả sử bạn đang đặt chuyến bay trên một dịch vụ web REST. Bạn không tạo kết nối "phiên" mới cho dịch vụ. Thay vào đó, bạn yêu cầu "đối tượng người tạo hành trình" để tạo cho bạn một hành trình mới. Bạn có thể bắt đầu điền vào chỗ trống nhưng sau đó nhận được một số thành phần hoàn toàn khác nhau ở nơi khác trên web để điền vào một số khoảng trống khác. Có không có phiên nào nên không có vấn đề gì khi di chuyển phiên trạng thái giữa khách hàng. Cũng không có vấn đề về "ái lực phiên" trong máy chủ (mặc dù vẫn còn các vấn đề cân bằng tải để tiếp tục).

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