【发布时间】:2021-03-16 01:24:30
【问题描述】:
我正在创建一个 ASP.NET Core 3.1 站点,现在已将一个测试版本发布到一个 azure 应用服务。
当我在 localhost 上运行我的 Web 应用程序时,它工作得很好,但是当我运行已发布的应用程序时,似乎某些操作不再存在(我知道它们存在,否则将是编译错误)并且我所做的一切get back 是 404 未找到。
当我发布时出现恶意操作的一个示例是“登录”,它接受电子邮件和代码并位于 HomeController 中:
public IActionResult LogIn(string email, string code)
{
//Code
return Json(jObject);
}
这个动作是通过这个 Ajax 代码调用的:
$.ajax({
type: "GET",
url: "/Home/LogIn",
data: { email: email, code: code },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
},
error: function (response) {
console.log(response);
}
});
ajax 调用返回 404 not found 在已发布的应用程序上。 但我也尝试通过创建“a”标签来做同样的事情:
<a asp-action="LogIn" asp-controller="Home" asp-route-email="test@test.com" asp-route-code="123">Login</a>
但这也返回 404 not found...
我尝试过的解决方案:
为动作(和控制器)添加了路由值:
[Route("Home/LogIn")]
public IActionResult LogIn(string email, string code)
{
//Code
return Json(jObject);
}
将 ajax 代码移至 .cshtml 文件并将 url 更改为:
url: "@Url.Action("LogIn", "Home")"
但是这些解决方案都不能解决我的问题...
有没有人认识到这个问题?有没有人有解决方案?非常感谢您的帮助。
提前致谢!
编辑:
我已经测试了删除“LogIn”操作的所有内容并将其替换为“return View()”并为其创建了一个视图,它工作正常。 “登录”操作也可以通过 ajax 调用找到,但是当我再次添加我想要的代码并发布时,该操作会再次出现 404 未找到...
然后我尝试将 [HttpGet] 添加到操作中,结果导致 405 方法不允许。所以我认为它看到了动作但忽略了它或类似的东西。
【问题讨论】:
标签: c# ajax asp.net-core azure-web-app-service http-status-code-404