使用NLog记录自定义Web请求标头

时间:2015-10-26 16:24:00

标签: asp.net-web-api2 nlog request-headers

我尝试在我的Web Api应用程序中记录请求编号,并将其作为自定义请求标头添加到第一个DelegatingHandler上:

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.Headers.Add(WebApiConstants.Headers.WebRequestCounterHeader, Interlocked.Increment(ref _requestsCounter).ToString("X8"));

        return base.SendAsync(request, cancellationToken);
    }

其中:

public const string WebRequestCounterHeader = "RequestIndex";

我的部分NLog配置如下:

  <variable name="RequestNumber"
            value="${aspnet-request:serverVariable=HEADER_RequestIndex}" />
    <target name="TraceLogger"
            type="File"
            fileName="${TraceFullPath}"
            archiveFileName="${TraceArchiveFullPath}"
            maxArchiveFiles="100"
            archiveNumbering="Sequence"
            archiveEvery="Day"
            layout="${FormattedDate} ${message}${RequestNumber} -> ${HttpMethodPadded} ${Url}" />

但我记录的邮件中没有包含请求编号:

26.10.2015 18:11:22.11 Begin -> [POST]    /api/v1/login

根据MSDN和NLog的帮助: HEADER_ 与HTTP_不同,HEADER_中的所有字符都按原样解释。例如,如果指定HEADER_MY_HEADER,则服务器将搜索名为MY_HEADER的请求标头。

在我的情况下,哪种NLog配置是正确的?

0 个答案:

没有答案
相关问题