创建自定义路由

Creating а custom routing

在我的应用程序中,我想创建一个自定义路由。我希望当我输入 www.mydomainname.com/stringdata 之类的 URL 时触发 DefaultAction:

public async Task<IActionResult> DefaultAction(string stringdata)
{
   ...
}

我尝试使用 app.UseMvc 扩展名来做到这一点:

app.UseMvc(routes =>
{
    routes.MapRoute(
      name: null,
      template: "{stringdata}",
      defaults: new { controller = "DefaultController", action = "DefaultAction" });
});

但我读到我应该使用 endpoints.MapControllerRoute() 而不是 app.UseMvc()

是否可以使用 endpoints.MapControllerRoute() 创建这条路线?

只需将 RouteAttribute [Route("{stringdata}")] 应用于操作方法:

[Route("{stringdata}")]
public async Task<IActionResult> DefaultAction(string stringdata)
{
   ...
}

用标准模板生成的Configure()方法按要求处理,不调用MapControllerRoute():

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

有关更多信息,包括如何使用 MapControllerRoute()(以备不时之需),请参阅 Routing to controller actions in ASP.NET Core