You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET 6 API项目中添加自定义命令行触发数据导入

简便实现命令行触发CSV导入的方案

不用新增控制台项目,直接在现有.NET 6 API项目中扩展命令行触发逻辑即可,具体步骤如下:

1. 修改Program.cs,添加命令行触发逻辑

调整API项目的Program.cs,分离服务注册与Web启动逻辑,同时加入命令行参数检测:

var builder = WebApplication.CreateBuilder(args);

// 保留原有的服务注册逻辑(包括IImportService、DbContext等依赖)
builder.Services.AddScoped<IImportService, ImportService>();
builder.Services.AddDbContext<YourDbContext>(options => 
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
// 其他原有服务注册代码...

// 构建服务提供者,用于获取导入服务实例
var serviceProvider = builder.Services.BuildServiceProvider();

// 检测命令行参数,触发导入流程
if (args.Contains("--import"))
{
    // 创建作用域,获取Scoped生命周期的服务
    using var scope = serviceProvider.CreateScope();
    var importService = scope.ServiceProvider.GetRequiredService<IImportService>();

    try
    {
        // 调用你的导入方法(同步/异步根据实际方法调整)
        await importService.ImportAsync();
        Console.WriteLine("✅ CSV数据导入完成");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"❌ 导入失败:{ex.Message}");
        Environment.Exit(1); // 非0退出码标记执行失败
    }
    Environment.Exit(0); // 正常退出,不启动Web服务
}

// 原有Web API启动逻辑
var app = builder.Build();

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run();

2. 命令行触发方式

  • 开发环境:在API项目的「属性→调试→应用程序参数」中填入--import,启动项目时会直接执行导入逻辑,而非启动Web服务。
  • 生产环境:进入API项目的发布目录,执行命令:
    dotnet YourApiProject.dll --import
    

3. 可选:扩展自定义参数

如果需要指定CSV文件夹路径等额外配置,可以扩展命令行参数解析:

string csvFolder = "./CSVFiles"; // 默认文件夹路径

// 解析--folder参数
if (args.Contains("--folder"))
{
    var folderIndex = Array.IndexOf(args, "--folder");
    if (folderIndex + 1 < args.Length)
    {
        csvFolder = args[folderIndex + 1];
    }
}

// 调用带路径参数的导入方法
await importService.ImportAsync(csvFolder);

触发命令示例:

dotnet YourApiProject.dll --import --folder ./MyCustomCSV

这种方案完全复用现有API的依赖配置与业务逻辑,无需新增项目,是最轻量化的实现方式。

内容的提问来源于stack exchange,提问作者Ikinidae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:05:03