ASP.NET MVC: HTTPContext и внедрение зависимости

Кто бы ни упаковывал используемый вами pgAdmin 4, он упаковывал его с клиентом PostgreSQL v10.

Так вот, где вам придется жаловаться.

В данном случае это, очевидно, Дейв Пейдж.

На сайте изображения Docker ( https://hub.docker.com/r/dpage/pgadmin4/ ) предлагается:

Пожалуйста, сообщайте о любых проблемах через Каналы поддержки pgAdmin. См. https://www.pgadmin.org/support/list/

blockquote>

. Поэтому, я думаю, правильный канал - подписаться на этот список рассылки и озвучить там свою жалобу.

Извините, что это так сложно, но различные инструменты во вселенной PostgreSQL поддерживаются разными, хотя и несколько связанными, группами, каждая из которых имеет свои каналы.

16
задан anonymous 18 May 2009 в 13:20
поделиться

3 ответа

Иметь абстрактный интерфейс HttpContext.Current. Выставляйте только нужные вам методы. GetUserName () , например, вызовет HttpContext.Current.User.Identity.Name в реализации. Сделайте это как можно тоньше.

Возьмите эту абстракцию и вставьте ее в другой класс вашего провайдера. Это позволит вам протестировать провайдера, высмеивая абстракцию контекста http. В качестве дополнительного преимущества с этой абстракцией HttpContext вы можете делать другие изящные вещи, помимо имитации. Во-первых, используйте его повторно. Добавьте параметры универсального типа в пакеты и т. Д.

8
ответ дан 30 November 2019 в 21:54
поделиться

Не понимаю, почему вы так беспокоитесь. Кажется, что просто использовать HttpContext.Current непосредственно в HttpContextUserProvider - это правильное решение. Вы никогда не собираетесь выполнять замену в другом HttpContext ...

3
ответ дан 30 November 2019 в 21:54
поделиться

Возможно, я что-то упустил, но приведенный выше ответ не работает для меня (с тех пор был удален - хотя это все еще был полезный ответ - он показал, как сказать SM пройти аргументы конструктора). Вместо этого, если я сделаю:

ObjectFactory.Initialize(x =>
{
    x.BuildInstancesOf<HttpContext>()
         .TheDefault.Is.ConstructedBy(() => HttpContext.Current);
    x.ForRequestedType<IUserProvider>()
         .TheDefault.Is.OfConcreteType<HttpContextUserProvider>();
});

Я заставлю его работать. Я сделал это после того, как нашел: http://codebetter.com/blogs/jeremy.miller/archive/2008/03/20/if-you-need-something-in-structuremap-but-you-can-t -build-it-with-new.aspx


edit:

Благодаря ответу Брэда я думаю , что у меня лучше работает HttpContext. Его ответ определенно работает, я просто не уверен, что мне нравится вызов HttpContext.Current внутри класса (кажется, что он скрывает зависимость, но я далек от эксперта в этом вопросе).

Приведенный выше код должен работать для инъекции HttpContext, насколько я могу судить. Мэтт Хинце добавляет, что если все, что мне нужно от HttpContext, - это User.Identity.Name, мой дизайн должен быть явным об этом (наличие интерфейса вокруг HttpContext раскрывает только то, что мне нужно). Я думаю, это хорошая идея.

Дело в том, что после обеда я как бы понял, что мой сервис действительно должен зависеть только от строки: userName. Зависимость от IUserProvider может не иметь особой добавленной стоимости. Итак, я знаю, что не хочу, чтобы он зависел от HttpContext, и я знаю, что все, что мне нужно, это строка (userName) - мне нужно посмотреть, смогу ли я выучить достаточно StructureMap foo, чтобы установить это соединение для меня. (ответ sirrocoo дает подсказку, с чего начать, но он удалил его: * ().

мой дизайн должен быть явным об этом (наличие интерфейса вокруг HttpContext раскрывает только то, что мне нужно). Я думаю, это хорошая идея.

Дело в том, что после обеда я как бы понял, что мой сервис действительно должен зависеть только от строки: userName. Зависимость от IUserProvider может не иметь особой добавленной стоимости. Итак, я знаю, что не хочу, чтобы он зависел от HttpContext, и я знаю, что все, что мне нужно, это строка (userName) - мне нужно посмотреть, смогу ли я выучить достаточно StructureMap foo, чтобы установить это соединение для меня. (ответ sirrocoo дает подсказку, с чего начать, но он удалил его: * ().

мой дизайн должен быть явным об этом (наличие интерфейса вокруг HttpContext раскрывает только то, что мне нужно). Я думаю, это хорошая идея.

Дело в том, что после обеда я как бы понял, что мой сервис действительно должен зависеть только от строки: userName. Зависимость от IUserProvider может не иметь особой добавленной стоимости. Итак, я знаю, что не хочу, чтобы он зависел от HttpContext, и я знаю, что все, что мне нужно, это строка (userName) - мне нужно посмотреть, смогу ли я выучить достаточно StructureMap foo, чтобы установить это соединение для меня. (ответ sirrocoo дает подсказку, с чего начать, но он удалил его: * ().

Я хочу, чтобы он зависел от HttpContext, и я знаю, что все, что мне нужно, это строка (userName) - мне нужно посмотреть, смогу ли я выучить достаточно StructureMap foo, чтобы установить это соединение для меня. (ответ sirrocoo дает подсказку, с чего начать, но он удалил его: * ().

Я хочу, чтобы он зависел от HttpContext, и я знаю, что все, что мне нужно, это строка (userName) - мне нужно посмотреть, смогу ли я выучить достаточно StructureMap foo, чтобы установить это соединение для меня. (ответ sirrocoo дает подсказку, с чего начать, но он удалил его: * ().

2
ответ дан 30 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: