我正在尝试将我们的公共 API 转换为仅使用单个 Program.cs 格式作为 .NET8 更新的一部分,但尽管应用程序已构建并运行,但当我尝试访问某个路线时,我得到了 404,并且在调试输出中我获取“请求到达中间件管道的末尾,而没有被应用程序代码处理。” 我已经删除了 dotnet 模板附带的默认“app.Xyz”以外的所有内容,但问题仍然存在。我的 Program.cs 的“应用程序”部分现在看起来像这样:
var app = builder.Build();
var listener = app.Services.GetRequiredService<DiagnosticListener>();
var observer = ActivatorUtilities.CreateInstance<AnalysisDiagnosticAdapter>(app.Services);
using var disposable = listener.SubscribeWithAdapter(observer);
app.UseHttpsRedirection();
app.UseRouting();
app.UseUserAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "Default",
pattern:"{controller=Home}/{action=Index}/{id?}"
);
app.Run();
我在 DiagnosticAdapter 中添加了它,看看这是否有帮助,但它并没有真正告诉我默认调试输出所做的任何事情。
我可以使用
app.MapGet();
在此文件中添加测试路由,它可以正常工作并返回,但任何外部控制器都会返回 404 错误。
您应该注册控制器。尝试用以下内容替换应用程序构建行:
var app = builder.Services.AddControllers().Build();