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

.NET 8中ELSA框架Hello World HTTP示例实现后404问题求助

Elsa 2.x Hello World HTTP 404 问题排查与解决

问题概述

基于.NET 8实现Elsa 2.14.1的Hello World HTTP示例时,服务正常启动但访问/hello-world返回404错误。

核心原因与修复方案

1. 中间件顺序错误

.NET 8的WebApplication模型对中间件执行顺序要求严格,代码中遗漏了授权中间件的注册,且UseHttpActivities的位置需要调整。

修复后的Program.cs代码:

using ElsaQuickstarts.WebApp.HelloWorld;

internal class Program
{
    private static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // 注册Elsa核心服务与HTTP活动
        builder.Services
                .AddElsaCore(options => options
                    .AddHttpActivities()
                    .AddWorkflow<HelloWorld>());

        // 注册授权服务(若无需授权可跳过此步)
        builder.Services.AddAuthorization();

        var app = builder.Build();

        // 按正确顺序添加中间件
        app.UseRouting();
        app.UseAuthorization(); // 必须在UseHttpActivities之前添加
        app.UseHttpActivities();

        app.Run();
    }
}

2. 允许匿名访问(可选)

如果测试场景不需要权限校验,可以直接在Elsa HTTP活动配置中开启匿名访问,避免授权环节干扰:

builder.Services.AddElsaCore(options => options
    .AddHttpActivities(httpOptions => 
    {
        httpOptions.AllowAnonymousAccess = true;
    })
    .AddWorkflow<HelloWorld>());

3. 验证Workflow加载状态

添加控制台日志确认Workflow是否被正确加载:
在WebApplication.CreateBuilder后添加日志配置:

builder.Logging.AddConsole();

启动项目后,查看控制台输出,若包含类似Loaded workflow definition 'HelloWorld'的日志,说明Workflow已正常注册。

4. 其他排查点

  • 确认请求路径与HttpEndpoint定义完全一致(/hello-world,路由默认不区分大小写)
  • 清理项目的bin和obj目录,重新执行dotnet restore和dotnet run,排除依赖缓存问题
  • 检查launchSettings.json中的HTTPS端口是否为8005,确保请求地址与服务监听地址匹配

内容的提问来源于stack exchange,提问作者Barancan GENÇ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:45:03