登录 ASP.NET Core

问题描述

我正在 ASP.Net Core 3.1 中构建日志机制。主要思想是在 DB 中记录每个请求的每个活动,其中属性 requestId (GUID) 对于重复/相同的请求是相同的。

例如我有sql表定义:

  • RecordId - 每个请求生成
  • RequestId - 对于重复/相同的请求具有相同的值
  • 状态 - 200、400 等...
  • DateCreated - 记录请求的时间

我需要帮助的是如何为重复/相同的请求获取相同的 RequestId ?

到目前为止,在我的项目中,我创建了一个请求中间件并尝试使用:

  • correlationId - 来自 NuGet 包 CorrelationId
  • traceId - 来自 HttpContext.TraceIdentifier(甚至不是 GUID 格式,无论如何,我试着看看我是否可以使用一些东西来依赖)

它们都在生成唯一的 id,我不需要。 任何建议或示例都会有所帮助。

解决方法

答案:

var url = "https://localhost:3030/api/attachment/Standard";

Guid requestId;
using (MD5 md5 = MD5.Create())
{
    byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(url));

    requestId = new Guid(hash);
}

解决:

  1. 为重复请求生成相同的 requestID
  2. 由于重新运行 api 时的限制,请勿使用 GetHashCode -> 即使 url 相同,它也会生成不同的代码。
  3. 考虑如果我们有两个以相同动作长度结尾的网址,“标准和示例”将获得不同的字节输出:
  • 标准是 [53,74,61,6e,64,72,64] 字节
  • 示例为 [45,78,6d,70,6c,65,73] 字节