修复IIS部署问题:

1. LoggingMiddleware修复:处理已关闭的Stream,防止ObjectDisposedException
2. Startup.cs添加UseStaticFiles中间件:支持静态文件访问
main
821644@qq.com 3 weeks ago
parent 9c86b39757
commit e13a77fe30

@ -25,6 +25,7 @@ namespace Haoliang.Api.Middleware
public async Task Invoke(HttpContext context)
{
var originalBodyStream = context.Response.Body;
MemoryStream? responseBody = null;
try
{
@ -32,16 +33,17 @@ namespace Haoliang.Api.Middleware
await LogRequestAsync(context);
// Capture response
using (var responseBody = new MemoryStream())
{
context.Response.Body = responseBody;
responseBody = new MemoryStream();
context.Response.Body = responseBody;
await _next(context);
await _next(context);
// Log response
await LogResponseAsync(context, responseBody);
// Log response
await LogResponseAsync(context, responseBody);
// Copy the response body to the original stream
// Copy the response body to the original stream
if (context.Response.ContentLength > 0)
{
responseBody.Seek(0, SeekOrigin.Begin);
await responseBody.CopyToAsync(originalBodyStream);
}
@ -51,6 +53,14 @@ namespace Haoliang.Api.Middleware
await _loggingService.LogErrorAsync($"Unhandled exception in logging middleware: {ex.Message}", ex);
throw;
}
finally
{
if (responseBody != null)
{
await responseBody.DisposeAsync();
}
context.Response.Body = originalBodyStream;
}
}
private async Task LogRequestAsync(HttpContext context)

@ -66,6 +66,7 @@ namespace Haoliang.Api
}
// 中间件顺序很重要
app.UseStaticFiles();
app.UseMiddleware<LoggingMiddleware>();
app.UseCors("AllowAll");
app.UseMiddleware<ExceptionMiddleware>();

Loading…
Cancel
Save