gpt4 book ai didi

c# - 当 Controller 方法具有异步后缀时,AspNetCore 3.0(从 2.2 升级)路由似乎中断

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:04 25 4
gpt4 key购买 nike

我将我的项目从 2.2 升级到 Core 3.0,一切似乎都运行良好,除了一个获取 JSON 请求。我有以下 Js 代码对 Home Controller 执行 Ajax 请求:

    var isLastPage = false;
var incidentModel = {
incidents: ko.observableArray([]),
getIncidents: function(a) {
var self = this;
//var $incdiv = $('#incidentsList');
$.getJSON('@Url.Action("AjaxPageAsync", "Home")', { page: page++, user: user, type: type }, function(data) {
//console.log(data);
self.incidents(self.incidents().concat(data));
if (data[0].IsLastPage) {
isLastPage = true;
}
a();
});
}
}

Home Controller 是这样的:

public async Task<ActionResult> AjaxPageAsync([FromQuery] string type, [FromQuery] string user, [FromQuery] int? page)
{
//Get some json data
return Json(Incident);
}

如您所知,我使用的是 knockout(版本 3.5.0 和 jquery 3.3.0),它们在其他页面上都运行良好。但是,上面 js 代码中的 getJSON 请求返回 404:

GET https://localhost:44366/Home/AjaxPageAsync?page=1&user=&type=&_=1575386778917 404

调试输出看起来很相似:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2.0 GET https://localhost:44366/Home/AjaxPageAsync?page=1&user=&type=&_=1575386536876

2.2 版本是相同的并且工作正常。我认为它可能是附加到 url 末尾的数字,但它也存在于 2.2 中。

此时,我认为 Controller 中的 AjaxPageAsync 任务的语法有问题,但不确定应该是什么。

有人知道我这里哪里出错了吗?谢谢。

最佳答案

根据 https://github.com/aspnet/AspNetCore/issues/8998 ,在 .NET Core 3.0 中,Async 从 Action 名称中删除。您的端点位于 /Home/AjaxPage。您可以通过替换

来更改此行为
services.AddControllers();

services.AddControllers(options => options.SuppressAsyncSuffixInActionNames = false);

ConfigureServices 方法中,或者只使用新路由

关于c# - 当 Controller 方法具有异步后缀时,AspNetCore 3.0(从 2.2 升级)路由似乎中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160799/

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