【问题标题】:ASP.NET Core Web API Conventional routingASP.NET Core Web API 常规路由
【发布时间】:2021-08-20 17:27:23
【问题描述】:

在 ASP.NET Core Web API 中,我使用的是属性路由,我需要将其移至常规路由。

 [ApiController]
 public class HomeController : Controller
 {
    [Route("GetHome")]
    [AllowAnonymous]
    [HttpGet]
    public string Getdeatils([FromBody] myclass cs, string system)
    {
    }
 }

使用属性路由,URL localhost/GetHome?system=abc 起作用并触发 Getdeatils 方法。

我正在尝试将相同的 URL 模式移动到启动,但我无法实现它。我已经从控制器类中删除了 [ApiController] 我在启动时尝试了下面的代码。但它不起作用。

 app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
               name: "mycustom",
               pattern: "GetHome",
               defaults: "{controller=Home}/{action=Getdeatils}/{system?}");
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{system?}");
            
        });

URL:localhost/Home/Getdeatils?system=abc - 这很好用

URL:localhost/GetHome?system=abc - 这不起作用。

如何在不更改 URL 格式的情况下实现这一点。

【问题讨论】:

标签: c# asp.net-core webapi


【解决方案1】:

请尝试使用此代码:

app.UseEndPoints(endpoints =>
{
  endpoints.MapControllerRoute(name: "mycustom",
           pattern: "GetHome",
           defaults: new {controller="Home", action="GetDetails"});
  endpoints.MapControllerRoute(name: "default",
           pattern: "{controller=Home}/{action=Index}/{system?}");
}

如果它按预期工作,请告诉我。

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2018-08-28
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2017-02-03
    • 2017-11-20
    相关资源
    最近更新 更多