Есть ли способ зарегистрировать все заголовки, используя свойство «aspnet-request: header» с одним параметром? Или я должен получать заголовки один за другим, как «aspnet-request: header = MyHeader» и объединить их в один параметр перед вставкой? У меня много заголовков и я не хочу добавлять их отдельно, мне нужен быстрый способ их регистрации, если это возможно.Net Core NLog.Web «Использование aspnet-request: header» используется?
1
A
ответ
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}
Будет там это все заголовки собственности? Вы планируете это? Или, если это возможно, я хотел бы сделать некоторые разработки, добавить функции в ваш код :) – kizilsu
Не уверен, есть ли спрос, но я включил теперь класс для inlclude. См. Сообщение. (еще не проверено) – Julian
Спасибо большое @Julian :) – kizilsu