语言

IHttpSysRequestPropertyFeature.TryGetRequestProperty 方法

定义

使用 HttpQueryRequestProperty Windows API 从HTTP.SYS读取任意HTTP_REQUEST_PROPERTY值。

public virtual bool TryGetRequestProperty(int propertyId, ReadOnlySpan<byte> qualifier, Span<byte> output, out int bytesReturned);
abstract member TryGetRequestProperty : int * ReadOnlySpan<byte> * Span<byte> * int -> bool
override this.TryGetRequestProperty : int * ReadOnlySpan<byte> * Span<byte> * int -> bool
Public Overridable Function TryGetRequestProperty (propertyId As Integer, qualifier As ReadOnlySpan(Of Byte), output As Span(Of Byte), ByRef bytesReturned As Integer) As Boolean

参数

propertyId
Int32

要查询的HTTP_REQUEST_PROPERTY标识符。 支持的一组值由 HTTP_REQUEST_PROPERTY 枚举 http.h定义;调用方负责分析使用相应的本机结构返回 output 的字节。

qualifier
ReadOnlySpan<Byte>

可选属性特定的限定符字节。 为不需要限定符的属性传递空范围;调用基础 API 时,它将映射到 null 指针。

output
Span<Byte>

接收属性值的目标缓冲区。 传递空跨度以查询所需的缓冲区大小。bytesReturned

bytesReturned
Int32

返回写入到 output的字节数。 如果 output 太小(或为空),则返回保存该值所需的缓冲区大小。

返回

如此 如果属性已成功读入 output。 如果 output 大小不够大,则为 False,无法容纳值;在这种情况下 bytesReturned ,包含所需的缓冲区大小。 对于任何其他失败,将引发异常。

例外

除ERROR_INSUFFICIENT_BUFFER或ERROR_MORE_DATA之外的任何 HttpSys 错误。

如果已安装Windows HTTP 服务器 API 不支持 HttpQueryRequestProperty。

注解

如果所需的缓冲区大小在前面未知,请先使用空 output 调用此方法以检索所需大小 bytesReturned,然后分配该多字节并重试查询。

适用于