gpt4 book ai didi

c# - ASP.NET Core 3.0 端点路由不适用于默认路由

转载 作者:行者123 更新时间:2023-12-03 18:31:35 26 4
gpt4 key购买 nike

我已经从 2.2 迁移了一个现有的 API 项目至3.0基于 this page 的指南.

因此我删除了:

app.UseMvc(options =>
{
options.MapRoute("Default", "{controller=Default}/{action=Index}/{id?}");
});

并插入:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "Default", pattern: "{controller=Default}/{action=Index}/{id?}");
});

但是没有 Controller 和 Action 会受到约束。我调用的任何 API 得到的只是 404。

我应该如何调试它,我在这里错过了什么?

更新: Startup.cs文件位于另一个程序集中。我们重用一个集中的 Startup.cs跨多个项目的文件。

最佳答案

来自 Attribute routing vs conventional routing :

It's typical to use conventional routes for controllers serving HTML pages for browsers, and attribute routing for controllers serving REST APIs.



来自 Build web APIs with ASP.NET Core: Attribute routing requirement :
[ApiController]属性使属性路由成为一项要求。例如:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

无法通过 UseEndpoints 定义的常规路由访问操作, UseMvc , 或 UseMvcWithDefaultRoute在 Startup.Configure 中。

如果要对 web api 使用常规路由,则需要在 web api 上禁用属性路由。

启动:
   public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseHttpsRedirection();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "Default",
pattern: "{controller=default}/{action=Index}/{id?}");
});
}

Web API Controller :
 //[Route("api/[controller]")]
//[ApiController]
public class DefaultController : ControllerBase
{
public ActionResult<string> Index()
{
return "value";
}

//[HttpGet("{id}")]
public ActionResult<int> GetById(int id)
{
return id;
}
}

这可以由 http://localhost:44888/default/getbyid/123 提出请求

关于c# - ASP.NET Core 3.0 端点路由不适用于默认路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58488727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com