Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автор: Стив Смит (Steve Smith)
Под API HttpContext, который приложения и промежуточное ПО используют для обработки запросов, находится уровень абстракции, называемый интерфейсами возможностей. Интерфейс каждой функции предоставляет детализированное подмножество функциональности, предоставляемой через HttpContext. Эти интерфейсы можно добавлять, изменять, заключать в оболочки, заменять или даже удалять по требованию сервера или ПО промежуточного слоя по мере обработки запроса, не создавая полностью новую реализацию HttpContext. Их также можно использовать для имитации функций при тестировании.
Коллекции функций
Свойство Features из HttpContext предоставляет доступ к коллекции интерфейсов функций для текущего запроса. Так как коллекция функций является изменяемой даже внутри контекста запроса, ПО промежуточного слоя можно использовать для изменения этой коллекции и добавления поддержки дополнительных функций. Некоторые расширенные функции доступны только при доступе к связанному интерфейсу через коллекцию функций.
Интерфейсы функциональных возможностей
ASP.NET Core определяет в Microsoft.AspNetCore.Http.Features несколько интерфейсов для стандартных функций HTTP, которые являются общими для многих серверов и ПО промежуточного слоя, чтобы отслеживать поддерживаемые ими функции. Серверы и ПО промежуточного слоя могут также предоставлять собственные интерфейсы с дополнительными функциональными возможностями.
Большинство интерфейсов функций поддерживают необязательные облегченные функции, а связанные с ними API HttpContext возвращают варианты по умолчанию, если реализация функции отсутствует. Несколько интерфейсов далее определены как обязательные, так как они реализуют основные функции запросов и ответов, которые необходимы для обработки запроса.
Следующие интерфейсы функций относятся к Microsoft.AspNetCore.Http.Features:
IHttpRequestFeature: определяет структуру HTTP-запроса, включая протокол, путь, строку запроса, заголовки и текст. Эта функция необходима для обработки запросов.
IHttpResponseFeature: определяет структуру HTTP-ответа, включая код состояния, заголовки и текст ответа. Эта функция необходима для обработки запросов.
IHttpResponseBodyFeature: определяет различные способы записи тела ответа с использованием Stream, PipeWriter или файла. Эта функция необходима для обработки запросов. Она заменяет собой IHttpResponseFeature.Body и IHttpSendFileFeature.
IHttpAuthenticationFeature: содержит объект ClaimsPrincipal, который в настоящее время связан с запросом.
IFormFeature: используется для разбора и кэширования входящих HTTP-запросов и многочастных форм.
IHttpBodyControlFeature: используется для управления тем, разрешено ли выполнение синхронных операций ввода-вывода для тела запроса и ответа.
IHttpActivityFeature: используется для добавления информации Activity для прослушивателей диагностики.
IHttpBufferingFeature: определяет методы отключения буферизации запросов и /или ответов.
IHttpConnectionFeature: определяет свойства идентификатора подключения и локальных и удаленных адресов и портов.
IHttpMaxRequestBodySizeFeature: определяет максимальный допустимый размер текста запроса для текущего запроса.
IHttpRequestBodyDetectionFeature: указывает, может ли запрос иметь текст.
IHttpRequestIdentifierFeature: добавляет свойство, которое можно реализовать для уникальной идентификации запросов.
IHttpRequestLifetimeFeature: определяет поддержку прерывания подключений или обнаружение преждевременного завершения запроса, например отключение клиента.
IHttpRequestTrailersFeature: предоставляет доступ к заголовкам трейлера запроса, если таковые есть.
IHttpResetFeature: используется для отправки сообщений сброса для протоколов, поддерживающих такие протоколы, как HTTP/2 или HTTP/3.
IHttpResponseTrailersFeature: позволяет приложению передавать трейлерные заголовки ответа, если это поддерживается.
IHttpSendFileFeature: определяет метод асинхронной отправки файлов.
IHttpUpgradeFeature: определяет поддержку обновлений HTTP, что позволяет клиенту указать дополнительные протоколы, которые требуется использовать, когда серверу нужно сменить протоколы.
IHttpWebSocketFeature: определяет API для поддержки WebSockets.
IHttpsCompressionFeature: определяет, следует ли использовать сжатие ответов для подключений HTTPS.
IItemsFeature: сохраняет коллекцию Items для состояния приложения для каждого запроса.
IQueryFeature: анализирует и кэширует строку запроса.
IRequestBodyPipeFeature: представляет текст запроса в виде PipeReader.
IRequestCookiesFeature: анализирует и кэширует значения заголовка запроса Cookie .
IResponseCookiesFeature: определяет, как файлы cookie ответа применяются к заголовку Set-Cookie .
IServerVariablesFeature: эта функция предоставляет доступ к переменным сервера запросов, таким как те, которые предоставляются IIS.
IServiceProvidersFeature: предоставляет доступ к IServiceProvider со службами запроса с ограниченной областью действия.
ISessionFeature: определяет абстракции ISessionFactory и ISession для поддержки пользовательских сеансов.
ISessionFeature реализуется с помощью SessionMiddleware (см. статью Сеанс в ASP.NET Core).
ITlsConnectionFeature: определяет API для получения сертификатов клиента.
ITlsTokenBindingFeature: определяет методы для работы с параметрами привязки маркера TLS.
ITrackingConsentFeature: используется для запроса, предоставления и отзыва согласия пользователя относительно хранения сведений о пользователе, связанных с действиями и функциями сайта.
Дополнительные ресурсы
ASP.NET Core