У меня есть MVC WebAPI Owin проект (мягкий), размещенный который использует Unity для разрешения зависимостей контроллераКак передать Owin контекст к Repo впрыскивается в контроллер Api
, которые выглядят как этот
public class PacientaiController : ODataController
{
private readonly IEntityRepo<Ent.Pacientas> repo;
public PacientaiController(IEntityRepo<Ent.Pacientas> repo)
{
this.repo = repo;
}
проблема, которую я пытаюсь решить - это как передать «OwinContex» в репо.
public class PacientasEntityRepo:IEntityRepo<Pacientas>,IDisposable
{
public PacientasEntityRepo(IOwinContext ctx)
{
.........
Если я пытаюсь зарегистрировать его, как это в Startup.cs
Container.RegisterType<IOwinContext>(new InjectionFactory(o => HttpContext.Current.GetOwinContext()));
я получаю пустой реф, говоря, что HttpContext.Current
является NULL
Основная идея здесь, чтобы пройти в настоящее время аутентифицированный пользователь для репо, поскольку репо размещает логику для запроса базы данных в зависимости от пользователя. (скажем, если пользователь является администратором, а затем верните эти данные, если пользователь гость - верните эти данные)
Суть в том, что это сам хост!
Не обращайте внимания на мой ответ, я не читал * самостоятельно размещенную * часть – Jcl
Я не могу быть единственным человеком, который читает это и думает, что есть запах, в частности, о том, что репо нуждается в доступе к * OWIN * контексту? Да, возможно, вам придется принять некоторые решения на основе текущего пользователя, но, несомненно, получить эту информацию и просто разоблачить «IPrincipal» или что-то похожее на репо, будет иметь больше смысла? –
Да, возможно. Это никоим образом не влияет на проблему, потому что мне все еще нужно получить доступ к OwinContext или RequestContext, вынуть текущего принципала и предоставить его IoC для ввода сконструированной зависимости. Не имеет значения, является ли это IOwinContext или IPrinciple, или IUserRole. Он все еще живет в «RequestsContext». Вопрос касается принципов коммуникации в такой или подобной ситуации. – Marty