【发布时间】:2018-12-10 21:44:00
【问题描述】:
这只是我最新的 dot net core 2 web 应用程序中的一个问题,它在以前的 dot net 应用程序中运行没有问题。
我有一个自定义 javascript 文件,其中包含指向我的网站托管的各种服务器的路径(主要是开发、测试、实时)。
我的 ajax 调用如下所示:
var gameid = '@Html.Raw(Model.Id)';
$.ajax({
type: 'GET',
url: url() + "UserGames/HasGame?id=" +gameid,
cache: false,
success: function (data) {
console.log(data);
},
error: function (req, status, err) {
console.log('Something went wrong', status, err);
}
});
有问题的 url() 只是在测试时查看我的本地服务器(*请注意,此端口已被编辑,是正确的):
function url() {
return "https://localhost:4432/";
}
错误没有触发,因为它甚至没有到达正在使用的控制器功能。
我非常困惑为什么这不起作用,我可以理解如果我得到某种错误返回,但我在我的所有应用程序中都使用了 ajax 调用,并且在使用核心 2 之前根本没有遇到这个问题.
是否有任何改变可能会影响您使用 ajax 调用的方式?
试图触发的方法,但我提到过,它没有击中控制器(注意:该方法中确实有代码,它只是一开始就没有击中控制器)
[HttpGet]
[ValidateAntiForgeryToken]
public async Task<IActionResult> HasGame(int id)
{
//stuff in here
}
【问题讨论】:
-
你有没有用 [HttpGet] 注解装饰 HasGame 方法?
-
您要分享操作方法吗?同时你可以使用 POST。
-
Http status 400 = Bad Request。找到了控制器,但传入的参数无效。您正在考虑未找到的 404。因此,要么您的问题列出了错误的状态代码要么您正在寻找错误的树(服务器代码因其他原因而失败)。
-
您能否进一步解释一下,我已经发布了所有相关代码,我在控制器上放了一个断点,但它似乎没有命中它。我明白你在说什么,如果我遗漏了一些明显的愚蠢的东西,我不会感到惊讶,但我似乎看不到它。
-
ValidateAntiForgeryToken可能是问题所在,因为 HttpGet 通常不支持此功能。该属性用于修饰动词,如 Put/Delete/Post 等。
标签: ajax asp.net-mvc asp.net-core-2.0