Из какого кода вы пытаетесь получить доступ к предмету?
Существуют два основных шага для ссылки на класс:
- Добавить ссылку на сборку класса в проекте.
- Добавить директиву
using
в пространство имен класса в файле кода.
Звучит так, будто вы выполнили первый шаг. Как насчет второго? Вот что означает эта ошибка:
Не удалось найти тип или имя пространства имен 'HttpCookie' (отсутствует директива using или ссылка на сборку?).
Чтобы выполнить шаг 2, описанный выше, у вас есть несколько вариантов:
- Полностью уточните название класса. Таким образом, вместо использования
HttpCookie
вы бы использовали System.Web.HttpCookie
.
- Добавить директиву
using
в файл кода. В верхней части файла (и это необходимо сделать для любого файла, который использует классы в этом пространстве имен), вы должны добавить using System.Web
. Тогда вы можете просто сослаться на HttpCookie
напрямую.
Кроме того, первая часть вашего вопроса поднимает отдельную проблему:
Имя Response не существует в текущем контексте
Это снова возвращает меня к моему вопросу о том, откуда вы получаете доступ к этому значению. Когда вы пишете код, скажем, в виде кода для страницы ASPX, вы по умолчанию получаете доступ к различным битам веб-контекстов ASP.NET. Они предоставляются базовым классом Page
. Такие вещи, как Request
и Response
легко доступны.
Однако, если вы пытаетесь получить доступ к этим объектам вне этого контекста (например, из пользовательского класса или другой сборки), вам нужно будет ссылаться на этот контекст вручную. Это можно сделать с помощью фабрики System.Web.HttpContext
class :
Request
становится System.Web.HttpContext.Current.Request
Response
становится System.Web.HttpContext.Current.Response
Это потому, что Request
и Response
не являются реальными классами. Это свойства текущего веб-контекста типа HttpRequest
и HttpResponse
. Эти свойства отображаются для вас, когда вы находитесь в том же контексте, но вне этого контекста вам нужно будет ссылаться на них полностью, как показано выше.
Следует отметить, что обычно не рекомендуется иметь зависимости от веб-контекста за пределами того места, где он уже доступен. Поэтому, если вы создаете пользовательский класс или другую сборку, вы можете сделать шаг назад и подумать о дизайне.
Если ваши пользовательские классы зависят от существования текущего экземпляра HttpContext
, то этот код никогда не может использоваться вне полностью осведомленного контекста веб-приложения. Таким образом, код менее пригоден для повторного использования. Таким образом, в зависимости от того, что вам нужно из этого контекста, вы можете повторно учитывать код, чтобы не нуждаться в самом контексте, а только требовать предоставления необходимых элементов из контекста.
Это не обязательно, чтобы помочь вам преодолеть текущую проблему, но об этом нужно помнить, чтобы двигаться вперед.