2012-01-03 29 views
5

tôi đã nhận Ninject MVC làm việc với Ninject WCF để có được nó để làm việc tôi bổ sung thêm hai dòng để phương pháp CreateKernelNinject MVC cùng với phần mở rộng WCF không làm việc với InRequestScope

kernel.Bind<ServiceHost>().To<NinjectServiceHost>(); 
KernelContainer.Kernel = kernel; 

Các phụ thuộc được tiêm, nhưng Phương thức vứt bỏ không được gọi, tôi đã thử cả hai với InRequestScope và làm phạm vi của riêng tôi Func trở lại OperationContext.Current như đối tượng Scope, nhưng việc xử lý không được gọi.

Cập nhật 2012/09/05 Thông tin này là lỗi thời, cho MVC và WCF tải về từ NuGet Ninject.MV3 và Ninject.Extensions.WCF (3.x) mẫu MVC NuGet sẽ thêm một bootstrapper Ninject NinjectWebCommon. cs và để hỗ trợ thêm trong một svc cho eddit Ninject xml svc (nhấp chuột phải/Quang cảnh đánh dấu) và thêm Factory = "Ninject.Extensions.Wcf.NinjectServiceHostFactory" đến nút xml

+2

tôi lên bỏ phiếu câu hỏi này bởi vì nó cho thấy làm thế nào để sử dụng Ninject cho MVC và WCF cùng một lúc, đó là thực sự khó khăn để tìm một ví dụ điển hình cho . –

+0

Thông tin này đã cũ, xem chỉnh sửa – Anders

Trả lời

2

Tôi không thể trả lời câu trả lời của Remo vì tôi là một luồng ngăn xếp n00b nhưng vấn đề với ngoại lệ 'System.Runtime.CompilerServices.ExtensionAttribute' là nó đã chuyển từ System.Core trong .net 4.0 sang mscorlib trong .net 4.5. Nếu bạn cài đặt .net 4.5 vấn đề biến mất. Tôi nghĩ rằng một cái gì đó được xây dựng với. 4,5 trong hỗn hợp. https://github.com/ninject/Ninject.Web.Common/issues/3 Có vẻ như âm thanh sẽ sớm được sửa. Đối với vấn đề Wcf InRequestScope Remo đã cho tôi một số trợ giúp ngày hôm nay trên các nhóm google ... "thêm một mô-đun mới có nguồn gốc từ" Ninject.GlobalKernelRegistrationModule "và tải nó vào nhân. Điều này sẽ được cố định cho bản phát hành cuối cùng mặc dù . "

tức là một cái gì đó giống như ...

public class MyModule : Ninject.GlobalKernelRegistrationModule<WcfRequestScopeCleanup> 
{ 
} 

//And where you load your modules... 
kernel.Load<MyModule>(); 
+0

Cảm ơn người đàn ông, giờ đây nó đã chính xác! – Anders

2

tôi khuyên bạn nên sử dụng Ninject 3.0. 0-rc2 có sẵn từ Nuget. InRequestScope hoạt động cho cả hai yêu cầu Web và WCF bên cạnh.

+1

Cảm ơn, tôi đã thử trong một dự án MVC3 mới, đã tải xuống Ninject.Web.Common ... Đã thay đổi OnePerRequestModule thành OnePerRequestHttpModule trong lớp NinjectWebCommon (Sai ​​trong mẫu nuget?) Dù sao, bây giờ tôi nhận được " Không thể tải loại 'System.Runtime.CompilerServices.ExtensionAttribute' từ assembly 'mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'. " – Anders

+0

Có vẻ như nó là một cuộc xung đột giữa Webactivator và Ninject .. cả hai đều hoạt động tốt độc lập nhưng cùng nhau tôi nhận được lỗi trên – Anders

+0

Gói hoạt động hoàn hảo cho tôi bằng cách sử dụng trình kích hoạt web mới nhất. Điều này phải là một cuộc xung đột với một số gói/thư viện khác. –

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