Tôi đang tạo một ứng dụng có giao diện ASP.NET Web API sử dụng phương pháp Self Hosting. Tôi muốn sử dụng một phạm vi tương tự như InRequestScope()
do MVC3 cung cấp. Khi tôi lưu trữ một ứng dụng Web API trên IIS, điều này dường như được hỗ trợ bởi Ninject.Extension.WebAPI. Nhưng khi tự lưu trữ WebAPI tôi nhận được một cá thể mới khi tôi tạo các ràng buộc InRequestScope()
. Có cách nào tôi có thể sử dụng phạm vi này khi tôi tự lưu trữ API web không?Sử dụng Ninjects InRequestScope() khi tự lưu trữ API Web
Trả lời
Bạn có thể sử dụng phần mở rộng NamedScope để xác định rằng bộ điều khiển xác định phạm vi và sử dụng phạm vi đó cho mọi thứ nằm trong phạm vi yêu cầu. Tốt nhất bạn sử dụng công ước cho định nghĩa này:
const string ControllerScope = "ControllerScope";
kernel.Bind(x => x.FromThisAssembly()
.SelectAllClasses().InheritedFrom<ApiController>()
.BindToSelf()
.Configure(b => b.DefinesNamedScope(ControllerScope)));
kernel.Bind<IMyComponent>().To<MyComponent>().InNamedScope(ControllerScope);
Tôi khuyên bạn nên thực hiện INotifyWhenDisposed
cho các bộ điều khiển sao cho các đối tượng trong phạm vi yêu cầu được giải phóng ngay sau khi được yêu cầu. Ví dụ. bằng cách bắt nguồn từ lớp sau thay vì ApiController
public abstract class NinjectApiController : ApiController, INotifyWhenDisposed
{
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
this.IsDisposed = true;
this.Disposed(this, EventArgs.Empty);
}
public bool IsDisposed
{
get;
private set;
}
public event EventHandler Disposed;
}
tôi cố gắng cung cấp một phần mở rộng cho WebAPI selfhosting somewhen trong tuần đến.
EDIT:
Selfhosting hỗ trợ hiện nay được cung cấp bởi Ninject.Web.WebApi.Selfhosting https://nuget.org/packages/Ninject.Web.WebApi.Selfhost/3.0.2-unstable-0
Ví dụ: https://github.com/ninject/Ninject.Web.WebApi/tree/master/src/Ninject.Web.WebApi.Selfhost
- 1. Định cấu hình SSL trên API Web Tự lưu trữ ASP.NET
- 2. Lưu trữ trang web ASP.Net và sử dụng ứng dụng MVC khác
- 3. Có thể phân phát trang web từ API web tự lưu trữ trong dịch vụ cửa sổ không?
- 4. tự lưu trữ asp.net mvc
- 5. DbContext vứt bỏ sau khi yêu cầu đầu tiên khi sử dụng InRequestScope Ninject của()
- 6. Lưu trữ dữ liệu API Facebook
- 7. Lưu trữ dữ liệu khi sử dụng Greasemonkey
- 8. xcodebuild bị bỏ qua khi sử dụng lưu trữ
- 9. SecurityException là unhandled khi sử dụng cô lập lưu trữ
- 10. Tự lưu trữ S3 thay thế
- 11. Lựa chọn tốt nhất cho máy chủ lưu trữ tự động mạnh mẽ: WCF so với ASP.NET Web Api
- 12. Sử dụng RedirectToAction trong API Web
- 13. Lưu trữ trang web Django của tôi
- 14. Android lưu trữ tập tin sử dụng
- 15. tự lưu trữ google's jsapi
- 16. lưu trữ nodeJS/mongoose ứng dụng web trên amazon EC2
- 17. Ninject InRequestScope mất tích
- 18. Khi nào sử dụng MVC4 Web-API và dịch vụ web HTTP truyền thống?
- 19. Cách sử dụng Quy trình được lưu trữ Chọn giá trị sử dụng trong khi
- 20. Tôi có nên lưu trữ cục bộ CSS được tạo bởi API Google Web Fonts không?
- 21. JCR so với CMIS: Tôi nên sử dụng API kho lưu trữ nào?
- 22. Plugin Wordpress - Cập nhật Tự lưu trữ
- 23. Sử dụng QTWebKit để hiển thị một trang web được lưu trữ trong bộ nhớ
- 24. Sử dụng ServiceStack Mini Profiler trong ứng dụng giao diện điều khiển tự lưu trữ
- 25. Tại sao lưu trữ web p2p không được sử dụng rộng rãi?
- 26. Lưu trữ một trang web trên PC bằng cách sử dụng apache (Xampp)
- 27. Sử dụng Git với kế hoạch chia sẻ lưu trữ
- 28. Tại sao nên sử dụng Phiên để lưu trữ trạng thái trong các trang web lưu lượng truy cập cao?
- 29. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 30. Người dùng thường sử dụng dịch vụ lưu trữ nào để xuất bản trang web Django?
Dường như bây giờ có một phần mở rộng Ninject.Web.WebAPI rằng hỗ trợ điều này, nhưng hiện không được liệt kê tại http://www.ninject.org/extensions.html? Trang đó có lỗi thời và nên chuyển hướng đến nơi khác hay chỉ cần cập nhật? nếu sau này, đó là nguồn của trang trên github và tôi có thể gửi một yêu cầu kéo để giúp đỡ? Cảm ơn rất nhiều, Remo !! Bạn và đá ninject :) –
Sử dụng phạm vi được đặt tên theo cách này không hỗ trợ ActionFilters –