C# My.net core 3.1 mvc操作在发布到azure应用程序服务时返回404
我正在创建一个ASP.NET Core 3.1网站,现在已经向azure应用程序服务发布了测试版本 当我在localhost上运行我的web应用程序时,它工作得很好,但当我运行发布的应用程序时,似乎有些操作不再存在(我知道它们存在,否则将是编译错误),我得到的只是一个404未找到 当我发布内容时,一个令人恼火的操作示例是“登录”,它接收电子邮件和代码,并位于HomeController中:C# My.net core 3.1 mvc操作在发布到azure应用程序服务时返回404,c#,ajax,asp.net-core,azure-web-app-service,http-status-code-404,C#,Ajax,Asp.net Core,Azure Web App Service,Http Status Code 404,我正在创建一个ASP.NET Core 3.1网站,现在已经向azure应用程序服务发布了测试版本 当我在localhost上运行我的web应用程序时,它工作得很好,但当我运行发布的应用程序时,似乎有些操作不再存在(我知道它们存在,否则将是编译错误),我得到的只是一个404未找到 当我发布内容时,一个令人恼火的操作示例是“登录”,它接收电子邮件和代码,并位于HomeController中: public IActionResult LogIn(string email, string code)
public IActionResult LogIn(string email, string code)
{
//Code
return Json(jObject);
}
[Route("Home/LogIn")]
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未在发布的应用程序上找到。
但我也尝试通过创建“a”标记来做同样的事情:
将ajax代码移动到.cshtml文件,并将url更改为:
url: "@Url.Action("LogIn", "Home")"
但这些解决方案都不能解决我的问题
有没有人认识到这个问题?有人有解决办法吗?我真的很感谢你的帮助
提前谢谢
编辑:
我已经测试过删除“LogIn”操作的所有内容,并将其替换为“return View()”,并为其创建了一个视图,效果很好。“LogIn”操作也可以通过ajax调用找到,但是当我再次添加我想要的代码并发布时,该操作会得到一个404 not found
然后,我尝试将[HttpGet]添加到操作中,结果是不允许使用405方法。因此,我认为它看到了动作,但忽略了动作或类似的动作。这里有一个诊断解决方案
myproject.dll
,然后反编译文件,检查源代码是否存在。已解决!
我解决了这个问题
我正在查看azure应用程序服务日志,在打电话时发现:
2020-12-04 19:14:57.864 +00:00 [Information] Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Route matched with {action = "LogIn", controller = "Home"}. Executing controller action with signature Microsoft.AspNetCore.Mvc.IActionResult LogIn(System.String, System.String) on controller Project.Controllers.HomeController.
再往下的日志流显示:
2020-12-04 19:14:57.929 +00:00 [Error] Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware: An unhandled exception has occurred while executing the request.System.Data.SqlClient.SqlException (0x80131904): Cannot open server 'mysrvname' requested by the login. Client with IP address 'appserviceIP' is not allowed to access the server.
所以问题是所有进行数据库调用的操作都“找不到”,但它们实际上得到了sqlexecptions,因为我忘了更新服务器防火墙规则以接受我的应用程序服务IP地址
真的很抱歉,当我应该得到一些服务器错误时,我没有找到404…非常感谢您的回答!我会尝试一下,但我不太确定在创建IIS站点时在“主机名”中放什么。保持“主机名”为空是可以的。祝贺你!很高兴知道你解决了问题。@DorisLv谢谢你!结果我得了404不是很奇怪吗?还是我遗漏了什么?
2020-12-04 19:14:57.929 +00:00 [Error] Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware: An unhandled exception has occurred while executing the request.System.Data.SqlClient.SqlException (0x80131904): Cannot open server 'mysrvname' requested by the login. Client with IP address 'appserviceIP' is not allowed to access the server.