在我的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(){
-------
}
}
答案 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