2016-11-22 4 views
1

Есть ли способ зарегистрировать все заголовки, используя свойство «aspnet-request: header» с одним параметром? Или я должен получать заголовки один за другим, как «aspnet-request: header = MyHeader» и объединить их в один параметр перед вставкой? У меня много заголовков и я не хочу добавлять их отдельно, мне нужен быстрый способ их регистрации, если это возможно.Net Core NLog.Web «Использование aspnet-request: header» используется?

ответ

1

В настоящее время только один раз в заголовок поддерживается, так как она вызывает

string header = httpRequest.Headers[this.Header];see source

редактирования: вы можете подключить его в NLog так:

using System; 
using System.Text; 
using Microsoft.AspNetCore.Http; 
using NLog.Config; 
using NLog.LayoutRenderers; 
using NLog.Web.Internal; 

namespace NLog.Web.LayoutRenderers 
{ 
    /// <summary> 
    /// Render all headers for ASP.NET Core 
    /// </summary> 
    /// <example> 
    /// <code lang="NLog Layout Renderer"> 
    /// ${aspnet-request-all-headers} 
    /// </code> 
    /// </example> 
    [LayoutRenderer("aspnet-request-all-headers")] 
    public class AspNetRequestAllHeadersLayoutRenderer : AspNetLayoutRendererBase 
    { 


     protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent) 
     { 
      var httpRequest = HttpContextAccessor.HttpContext.TryGetRequest(); 
      if (httpRequest == null || httpRequest.Headers == null) 
      { 
       return; 
      } 
      foreach(var kpv in httpRequest.Headers) 
      { 

       if (header != null) 
       { 
        builder.Append(kpv.Key); 
        builder.Append(=); 
        builder.Append(kpv.Value); 
       } 
      } 

     } 
    } 
} 

Зарегистрируйте (startup.cs)

ConfigurationItemFactory.Default.LayoutRenderers 
         .RegisterDefinition("aspnet-request-all-headers", typeof(AspNetRequestAllHeadersLayoutRenderer )); 

См. Также Extending NLog

использование

${aspnet-request-all-headers} 
+0

Будет там это все заголовки собственности? Вы планируете это? Или, если это возможно, я хотел бы сделать некоторые разработки, добавить функции в ваш код :) – kizilsu

+0

Не уверен, есть ли спрос, но я включил теперь класс для inlclude. См. Сообщение. (еще не проверено) – Julian

+0

Спасибо большое @Julian :) – kizilsu