Функции запросов в 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 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