source

ASP.NET 요청 헤더를 문자열로 덤프하는 방법

lovecheck 2023. 6. 21. 22:47
반응형

ASP.NET 요청 헤더를 문자열로 덤프하는 방법

디버깅을 위해 GET 요청 헤더의 빠른 덤프를 이메일로 보내고 싶습니다.클래식 ASP에서는 Request 객체만으로 이 작업을 수행할 수 있었지만,Request.ToString()작동하지 않습니다.다음 코드가 빈 문자열을 반환했습니다.

using (StreamReader reader = new StreamReader(Request.InputStream))
{
    string requestHeaders = reader.ReadToEnd();
    // ...
    // send requestHeaders here
}

Request 개체의 Headers 속성을 확인합니다.

C#

string headers = Request.Headers.ToString();

또는 다른 방법으로 포맷하려면 다음을 수행합니다.

string headers = String.Empty;
foreach (var key in Request.Headers.AllKeys)
  headers += key + "=" + Request.Headers[key] + Environment.NewLine;

VB.NET:

Dim headers = Request.Headers.ToString()

또는:

Dim headers As String = String.Empty
For Each key In Request.Headers.AllKeys
  headers &= key & "=" & Request.Headers(key) & Environment.NewLine
Next

페이지에서 추적 기능을 설정하여 헤더, 쿠키, 폼 변수, 쿼리 문자열 등을 쉽게 볼 수 있습니다.

aspx 시작의 맨 위 줄:

<%@ Page Language="C#" Trace="true" 

(나와 같은) 부재로 어려움을 겪고 있는 사람들을 위해.AllKeys의 재산.IHeaderDictionary구현(컨트롤러 작업 내부에서) 이렇게 문자열의 모든 헤더를 직렬화할 수 있었습니다.

using System;
using System.Text;

// ...

var builder = new StringBuilder(Environment.NewLine);
foreach (var header in Request.Headers)
{
    builder.AppendLine($"{header.Key}: {header.Value}");
}
var headersDump = builder.ToString();

ASP.NET Core 3.1을 사용하고 있습니다.

당신은 사용할 수 있습니다.

string headers = Request.Headers.ToString(); 

그러나 아래 코드를 사용하여 디코딩할 수 있도록 URL 인코딩 문자열을 반환합니다.

String headers = HttpUtility.UrlDecode(Request.Headers.ToString()) 

asp.net core침을 뱉다Microsoft.AspNetCore.HttpSys.Internal.RequestHeaders위해서Request.Headers.ToString()따라서 이러한 맥락에서 해결책은 다음과 같습니다.

IEnumerable<string> keyValues = context.Request.Headers.Keys.Select(key => key + ": " + string.Join(",", context.Request.Headers[key]));
string requestHeaders = string.Join(System.Environment.NewLine, keyValues);

이것(VB)을 사용하여 모든 헤더를 한 번에 string()으로 가져올 수 있습니다.네트)

Request.Headers.ToString.Split(New String() {vbCrLf}, StringSplitOptions.RemoveEmptyEntries)

.Net 6.0 이상:

public virtual IActionResult Headers()
{
    System.Text.StringBuilder sb = new();
    foreach (var key in _httpContext.HttpContext.Request.Headers)
    {
        sb.Append(key.Key);
        sb.Append("=");
        sb.AppendLine(key.Value);
    }
    return Ok(sb.ToString());
}

언급URL : https://stackoverflow.com/questions/2628584/how-to-dump-asp-net-request-headers-to-string

반응형