小编Muh*_*zim的帖子

在 ASP.NET Core 中间件出现异常时获得空响应

我正在尝试创建一个可以记录响应正文以及全局管理异常的中间件,我成功了。我的问题是我放在异常中的自定义消息没有显示在响应中。

中间件代码 01:

public async Task Invoke(HttpContext context)
{
    context.Request.EnableRewind();
        
    var originalBodyStream = context.Response.Body;
    using (var responseBody = new MemoryStream())
    {
        try
        {
            context.Response.Body = responseBody;
            await next(context);

            context.Response.Body.Seek(0, SeekOrigin.Begin);
            var response = await new StreamReader(context.Response.Body).ReadToEndAsync();
            context.Response.Body.Seek(0, SeekOrigin.Begin);

            // Process log
             var log = new LogMetadata();
             log.RequestMethod = context.Request.Method;
             log.RequestUri = context.Request.Path.ToString();
             log.ResponseStatusCode = context.Response.StatusCode;
             log.ResponseTimestamp = DateTime.Now;
             log.ResponseContentType = context.Response.ContentType;
             log.ResponseContent = response;
             // Keep Log to text file
             CustomLogger.WriteLog(log);

            await responseBody.CopyToAsync(originalBodyStream);
        }
        catch (Exception ex)
        {
            context.Response.ContentType = …
Run Code Online (Sandbox Code Playgroud)

c# middleware asp.net-core

7
推荐指数
1
解决办法
7876
查看次数

标签 统计

asp.net-core ×1

c# ×1

middleware ×1