Функции запросов в ASP.NET Core

Автор: Стив Смит (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: определяет различные способы записи текста отклика с помощью файла , a StreamPipeWriterили файла. Эта функция необходима для обработки запросов. Она заменяет собой 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 для поддержки веб-сокетов.

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: используется для запроса, предоставления и отзыва согласия пользователя относительно хранения сведений о пользователе, связанных с действиями и функциями сайта.

Дополнительные ресурсы