Tôi đã có một MVC WebAPI owin dự án (mềm lưu trữ), có sử dụng Unity để giải quyết điều khiển phụ thuộcLàm thế nào để vượt qua Owin ngữ cảnh để một Repo được tiêm vào bộ điều khiển Api
mà trông như thế này
public class PacientaiController : ODataController
{
private readonly IEntityRepo<Ent.Pacientas> repo;
public PacientaiController(IEntityRepo<Ent.Pacientas> repo)
{
this.repo = repo;
}
vấn đề tôi đang cố gắng giải quyết - là làm cách nào để chuyển 'OwinContex' vào Repo.
public class PacientasEntityRepo:IEntityRepo<Pacientas>,IDisposable
{
public PacientasEntityRepo(IOwinContext ctx)
{
.........
Nếu tôi cố gắng đăng ký nó như thế này trong Startup.cs
Container.RegisterType<IOwinContext>(new InjectionFactory(o => HttpContext.Current.GetOwinContext()));
tôi nhận được một ref null, nói rằng HttpContext.Current
là NULL
Ý tưởng chính ở đây, là để vượt qua hiện người dùng đã được xác thực cho repo, vì Repo lưu trữ Logic để truy vấn Cơ sở dữ liệu, tùy thuộc vào người dùng. (nếu người dùng là Quản trị viên, sau đó trả lại dữ liệu này, nếu người dùng là khách - hãy trả lại dữ liệu này)
Vấn đề là - đây là Máy chủ tự!
Bỏ qua câu trả lời của tôi, tôi đã không đọc phần * tự lưu trữ * – Jcl
Tôi không thể là người duy nhất đọc và nghĩ rằng có một mùi, cụ thể là về Repo cần truy cập vào ngữ cảnh * OWIN *? Có, nó có thể cần phải thực hiện một số quyết định dựa trên người dùng hiện tại nhưng chắc chắn có được thông tin đó và chỉ lộ ra một 'IPrincipal' hoặc một cái gì đó tương tự như repo sẽ có ý nghĩa hơn? –
Có thể. Nó không ảnh hưởng đến vấn đề trong anyway, gây ra tôi vẫn cần phải truy cập vào OwinContext hoặc RequestContext, đưa ra các hiệu trưởng hiện tại, và cung cấp cho nó để IoC để tiêm vào sự phụ thuộc đang được xây dựng. Không quan trọng nếu đó là một IOwinContext hoặc IPrinciple, hoặc IUserRole. Nó vẫn còn sống trong 'RequestsContext'. Câu hỏi là về các nguyên tắc giao tiếp trong tình huống tương tự hoặc tương tự. – Marty