asp.net核心3路由

时间:2019-09-24 14:04:14

标签: asp.net-core asp.net-core-3.0

在我的Asp.net core 3项目中,我正在使用一些控件从js代码访问以执行某些操作,还同时使用了Razor页面。

在配置服务部分:

    services.AddControllersWithViews();
    services.AddRazorPages();

我在视图中添加了RazorPages和MVC控制器。

然后在“配置”部分

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

        });

添加了以上代码。 当我尝试访问控制器时,我得到404。我还尝试仅添加services.AddControllers();

需要帮助。

编辑:控制器代码

public class DashboardsController : BaseController, IDashboardsController
{
    [HttpGet]
     public async Task<JsonResult> GetAssetCategorySummaryAsync(){
        -------
    }
}

2 个答案:

答案 0 :(得分:1)

您的网址应为localhost:9011/Dashboards/GetAssetCategorySummary

您可以按如下所示修改Startup.cs以允许使用整个动作名称:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options =>
        {
            options.SuppressAsyncSuffixInActionNames = false;
        });
        services.AddControllersWithViews();
        services.AddRazorPages();
    }

这是github上的一个已知问题,您可以参考here

答案 1 :(得分:0)

我可以推荐我的解决方案。

在启动中

app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

像这样创建您的CUSTOM基本控制器。

    [Route("api/[controller]/[action]/{id?}")]
    [ApiController]
    public class CustomBaseController : ControllerBase
    {
    }

并使用CustomBaseController

 public class TestController : CustomBaseController
    {
        public IActionResult Test()
        {
            return Ok($"Test {DateTime.UtcNow}");
        }
    }

Rout` api / Test / test