fix: 修复空 catch 吞异常问题,端口号抽离到配置,统一日志为 Serilog
- 所有空 catch 块补全日志记录,统一使用 Serilog/AppLog - 按场景分级:Error(意外失败)、Warning(次要问题)、Information(预期内) - 端口 HttpPort/HttpsPort 抽离到 appsettings.json Server 配置节 - QrCodeService 通过 IConfiguration 读取端口,消除硬编码 - 前端通过 Vite proxy 转发 /api,http.ts 统一使用 origin 地址 - 移除所有 Debug.WriteLine 和 Serilog.Log.Debug 日志 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -26,9 +26,9 @@ namespace FileShare_Services.Endpoints
|
||||
// ---- 全局日志过滤器(记录每个请求) ----
|
||||
endpoints.AddGlobalFilter(async (ctx, next) =>
|
||||
{
|
||||
Serilog.Log.Debug("→ {Method} {Path}", ctx.Method, ctx.Path);
|
||||
Serilog.Log.Information("→ {Method} {Path}", ctx.Method, ctx.Path);
|
||||
await next(ctx);
|
||||
Serilog.Log.Debug("← {Method} {Path} | {StatusCode}", ctx.Method, ctx.Path, ctx.StatusCode);
|
||||
Serilog.Log.Information("← {Method} {Path} | {StatusCode}", ctx.Method, ctx.Path, ctx.StatusCode);
|
||||
});
|
||||
|
||||
// ---- 业务端点注册 ----
|
||||
|
||||
@@ -190,6 +190,7 @@ namespace FileShare_Services.Extensions
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Serilog.Log.Error(ex, "桌面端点处理异常 | {Method} {Path}", method, path);
|
||||
ctx.StatusCode = 500;
|
||||
ctx.StatusMessage = "Internal Server Error";
|
||||
ctx.ResponseBody = new { success = false, error = ex.Message };
|
||||
|
||||
@@ -223,9 +223,9 @@ namespace FileShare_Services.Services.FileLibrary
|
||||
{
|
||||
await ScanRootAsync(root.Id, cancellationToken);
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
// ScanRootAsync records the error on the root. Continue scanning other roots.
|
||||
Serilog.Log.Warning(ex, "扫描文件库根目录失败 RootId={RootId}", root.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -378,8 +378,9 @@ namespace FileShare_Services.Services.FileLibrary
|
||||
directories = Directory.EnumerateDirectories(current);
|
||||
files = Directory.EnumerateFiles(current);
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
Serilog.Log.Information(ex, "无法枚举目录 {Directory},已跳过", current);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -460,8 +461,9 @@ namespace FileShare_Services.Services.FileLibrary
|
||||
{
|
||||
return drive.IsReady ? selector(drive) : null;
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
Serilog.Log.Information(ex, "获取驱动器属性失败,已跳过");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FileShare_Common.Core;
|
||||
using FileShare_Services.Core;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using QRCoder;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
@@ -10,7 +11,7 @@ namespace FileShare_Services.Services.QrCode
|
||||
/// <summary>
|
||||
/// 二维码生成服务,获取局域网 IP 并生成 PNG 格式的访问二维码。
|
||||
/// </summary>
|
||||
public sealed class QrCodeService : IQrCodeService
|
||||
public sealed class QrCodeService(IConfiguration configuration) : IQrCodeService
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public Task<object?> GenerateQrCodeAsync(ServiceEndpointContext ctx)
|
||||
@@ -19,7 +20,8 @@ namespace FileShare_Services.Services.QrCode
|
||||
if (ip is null)
|
||||
throw new InvalidOperationException("无法获取局域网IP地址");
|
||||
|
||||
var url = $"http://{ip}:5206";
|
||||
var port = int.TryParse(configuration["Server:HttpPort"], out var p) ? p : 5206;
|
||||
var url = $"http://{ip}:{port}";
|
||||
var base64 = GeneratePngBase64(url);
|
||||
return Task.FromResult<object?>(ResponseHelper.Ok(new QrCodeResponse(url, base64)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user