2009-09-30 34 views
5

UPDATE:IIS7 & Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule đăng ký các vấn đề

Trong Windsor 2,5 tên lắp ráp là Castle.Windsor không Castle.MicroKernel


Tôi đang cố gắng để triển khai một ASP.NET MVC ứng dụng cho IIS7 và tôi gặp phải lỗi này:

Looks like you forgot to register the http module Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule Add '' to the section on your web.config

My httpModules contains:

<httpModules> 
    <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.MicroKernel"/> 
</httpModules> 

system.webServer xử lý phần chứa

<handlers> 
    <remove name="PerRequestLifestyle"/> 
    <add name="PerRequestLifestyle" preCondition="managedHandler" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Microkernel" verb="*" path="*.castle" /> 
</handlers> 

tôi thêm phần verb="*" path="*.castle" như tôi đã nhận lỗi khi họ bị mất tích. Không chắc liệu giá trị của chúng có chính xác không.

Bất kỳ ai biết vấn đề ở đây là gì?

+1

PerWebRequestLifestyleModule là một mô-đun, không phải là một bộ xử lý. Loại bỏ nó khỏi phần xử lý. –

+0

Hãy thử bao gồm Phiên bản, Văn hóa và PublicKeyToken trong khai báo mô-đun. –

+0

Cảm ơn, tôi đã xóa tuyên bố mô-đun. Phiên bản, Văn hóa và PublicKeyToken không cần thiết. Tôi cũng phải thêm làm người xử lý. Cũng phải tạo thư mục 'C: \ TempImageFiles' để làm cho nó hoạt động. –

Trả lời

6

Bạn có thể giải quyết vấn đề bằng cách đăng ký các module HTTP trong cấu hình/system.webServer/modules thay vì cấu hình/system.web/httpModules.

1

Đã cho tôi một thời gian để tìm một giải pháp cho điều này nhưng tất cả tôi phải là cập nhật các dll được referneced trong web.config ...

Sử dụng Castle.Core và Windsor 2.5.1 ...

4

Vấn đề của tôi là tôi đã khởi động vùng chứa trong Application_Start, Mô-đun không được khởi tạo tại thời điểm đó trong ASP.NET nên khi bạn cố gắng đăng ký/sử dụng PerWebRequest Lối sống nó ném ngoại lệ vì nó phát hiện mô-đun không được khởi tạo .

Tôi đã sử dụng this library từ Castle Contrib cung cấp lối sống HybridPerWebRequestTransient mà nếu không được khởi tạo tại thời điểm này, hãy sử dụng Lối sống thoáng qua.

Bạn chỉ cần tải xuống thư viện (dưới dạng zip là ok), mở Solution và biên dịch nó, lấy DLL đã tạo và tham chiếu nó trong dự án của bạn.

Nếu bạn đang sử dụng phiên bản Castle.Windsor trên 3.0, bạn sẽ phải loại bỏ tham chiếu hiện tại và thêm tham chiếu đến phiên bản bạn đang sử dụng (Tôi đang sử dụng 3.1 và không gặp bất kỳ sự cố nào).

Đây là mã để sử dụng Lifestyle: .LifeStyle.HybridPerWebRequestTransient()

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