2010-10-12 24 views
6

Tôi có một số dịch vụ WCF được lưu trữ bởi IIS với khả năng tương thích ASP.Net được bật.Tại sao HttpContext.Current null trong lần yêu cầu đầu tiên tới dịch vụ WCF hỗ trợ ASP.Net?

Tôi có sau trong web.config của tôi:

< serviceHostingEnvironment aspNetCompatibilityEnabled = "true" />

Và dịch vụ của tôi lớp được trang trí với những điều sau đây:

[AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Vì một số lý do lạ, HttpContext.Current là null cho yêu cầu đầu tiên sau khi ứng dụng web khởi động. HttpContext.Current không phải là null cho các yêu cầu sau như mong đợi.

Có ai có ý tưởng tại sao nó không hoạt động cho yêu cầu đầu tiên không?

Cuộc gọi đến HttpContext.Current là từ bên trong lớp UserNamePasswordValidator tùy chỉnh mà tôi đã viết để kiểm tra số tiền được lưu trữ trong cơ sở dữ liệu.

+0

Bạn có nghĩa là sau khi dịch vụ chạy, yêu cầu đầu tiên cho dịch vụ không xt khi bạn nhận được bối cảnh trong (các) yêu cầu tiếp theo? – Kangkan

+0

Có. Yêu cầu đầu tiên đối với một trong các phương thức dịch vụ sau khi triển khai các dll mới hoặc khởi động lại ứng dụng máy chủ asp.net bị treo với một con trỏ rỗng trên lời gọi HttpContext.Current. Các yêu cầu thứ 2 và sau đây cho dịch vụ hoạt động tốt. –

+0

Câu hỏi được cập nhật để bao gồm lưu ý về UserNamePasswordValidator tùy chỉnh. –

Trả lời

1

Hóa ra đây là lỗi trong khuôn khổ đã được sửa trong 4.0. more info

+0

Có ai có thể cung cấp liên kết vẫn đang hoạt động cho chủ đề đó không? Tôi đã nhận được cùng một vấn đề trên một trang web sharepoint (đó là 3,5) Cảm ơn. –

0

Nếu bạn đang sử dụng chế độ tích hợp IIS 7.0 để lưu trữ ứng dụng HttpContext.Current có thể không được khởi tạo trong Application_Start vì vậy nếu bạn đang cố gắng truy cập vào đó, nó sẽ bị lỗi.

+0

Tôi không gọi nó từ sự kiện Application_Start. Lớp UserNamePasswordValidator được gọi bởi hệ thống ống nước WCF. –

+0

Điều gì sẽ xảy ra nếu bạn tắt chế độ tích hợp trong IIS và sử dụng chế độ cổ điển thay thế? –

+0

Chế độ cổ điển thực sự khắc phục sự cố, nhưng bây giờ tôi có vấn đề mới khi không ở chế độ tích hợp. –

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