2014-01-11 2 views
2

Итак, я создаю библиотеку классов, которая обрабатывает пользовательскую информацию, такую ​​как имя пользователя, пароль и т. Д. Я хочу сделать это, чтобы я мог просто ссылаться на эту библиотеку с любыми моими веб-приложениями и не должен постоянно переписывать часть пользовательской информации ,Как мне получить доступ к HttpContext.Current.Session в библиотеке классов?

В библиотеке классов пользовательской информации я хочу обработать логин. Я сделал это раньше в app_code, который был частью веб-проекта, используя HttpContext.Current.Session. Но, когда я пытаюсь использовать его в своей библиотеке классов (даже в то время как using System.Web), он генерирует ошибку компиляции, заявляя, что HttpContext не существует в этом контексте. Как я могу получить к нему доступ?

ответ

8

При создании класса типа утилиты, который работает с зависимостью, такой как HttpContext, лучше всего передать контекст или сеанс в класс либо через конструктор, либо по вызову метода. Таким образом, потребители вашего класса явно заявляют, что он требует, чтобы этот объект функционировал. Это также позволяет тестировать ваш класс изолированно.

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

+0

Это хорошая идея. Но, разве мне не нужно будет иметь доступ к HttpContext даже в качестве параметра? Моя большая проблема заключается в том, что код не получает ссылку на HttpContext. – ScubaSteve

+0

Вы имеете в виду, что он не распознает тип при объявлении параметра? Убедитесь, что вы не настроите профиль клиента как версию фреймворка. У него не будет System.Web. – Jason

+0

Правильно, он не распознает тип. Он не нацелен на профиль клиента и имеет доступ к System.Web. Но, все System.Web имеет ссылку на это: System.Web..AspNetHostingPermission, System.Web.AspNetHostingPermissionAttribute и System.Web.AspNetHostingPermissionLevel. – ScubaSteve

Смежные вопросы