我使用以下代码为操作添加自定义标头:
public class RequestIdParameter : IOperationFilter
{
public void Apply(Swashbuckle.Swagger.Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation == null) return;
if (operation.parameters == null)
{
operation.parameters = new List<Parameter>();
}
var requestParameter = new Parameter
{
description = "RequestId",
@in = "header",
name = "RequestId",
required = true,
type = "string"
};
operation.parameters.Add(requestParameter);
}
}
但现在我需要阅读这个价值。我尝试了这段代码,但自定义标头不存在:
System.Web.HttpContext.Current.Items.contains("requestId")
答案 0 :(得分:1)
试试这个:
if (HttpContext.Current.Request.Headers.Contains("RequestId"))
{
string value = HttpContext.Current.Request.Headers.GetValues("RequestId").FirstOrDefault();
}
或
IEnumerable<string> headerValues;
if (HttpContext.Current.Request.Headers.TryGetValues("RequestId", out headerValues))
{
string value = headerValues.FirstOrDefault();
}