1. DB未启动,导致service崩溃
Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
......
//UseExceptionHandler:捕捉服务启动时的错误
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
ExceptionEntity result = new();
result.Status = "200";
result.Res = "OK";
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
if (exceptionHandlerPathFeature?.Error is MySqlConnector.MySqlException)
{
context.Response.StatusCode = 512;//数据库连接错误
result.Status = "512";
result.Res = "NG"
}
//Formatting.Indented:缩进格式进行整形
await context.Response.WriteAsync(JsonConvert.SerializeObject(result, Formatting.Indented));
});
}).UseHealthChecks("/health");//启动错误时,依旧启动服务
......
}
2. 明明response中已经写好数据,而在取数据就是取不到
现象: 业务处理完后,把处理结果写进response
httpContext.Response.StatusCode = 200;
var data = JsonConvert.SerializeObject(result.Data);
await httpContext.Response.WriteAsync(data);//放入处理结果
验证返回结果
return Encoding.UTF8.GetString(response.BodyWriter.GetMemory().ToArray()).Replace("\0", string.Empty)
这里返回结果,总是空百思不得其解
解决方法:可能偏移量发生了变动
response.Body.Seek(0, SeekOrigin.Begin);//把body的偏移量重置
var reader = new StreamReader(response.Body);
return reader.ReadToEndAsync().Result;