如何在Swashbuckle中读取自定义标题?

时间:2017-10-11 04:27:29

标签: asp.net-mvc swagger swashbuckle

我使用以下代码为操作添加自定义标头:

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")

1 个答案:

答案 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();
}