将 MVC 应用程序部署到 Azure 应用程序服务时出现 POSTS 问题

Posted

技术标签:

【中文标题】将 MVC 应用程序部署到 Azure 应用程序服务时出现 POSTS 问题【英文标题】:Issue with POSTS when deploying MVC app to Azure App Service 【发布时间】:2021-03-04 21:58:53 【问题描述】:

我有一个完整的 Web 应用程序,可以在 localhost 上完美运行。每个端点都被正确命中并顺利关闭。但是,当我将此 Web 应用程序发布到 Azure 应用程序服务时,没有任何 POST 调用被命中。当我观察网络​​选项卡内部发生的事情时,我看到了 404。这似乎只发生在 POST 而不是 GET 上。 GET 似乎工作正常。

另外,注意我使用 Razor 页面处理程序来触发操作可能很重要。如您所见,我有一个 Razor 页面处理程序 asp-page-handler="Login"应该在名为 OnPostLogin 的代码中触发一个动作。

CShtml

 <form class="text-center p-5" method="post">
     <h5>UserName</h5>
     <div asp-validation-summary="All" class="error-message"></div>
     <input type="text" id="defaultLoginFormEmail" class="form-control mb-4" placeholder="UserName" asp-for="@Model.UserName">
     <h5>Password</h5> 
     <input type="password" id="defaultLoginFormPassword" class="form-control mb-4" placeholder="Password" asp-for="@Model.Password">
     <button class="btn btn-block my-4" type="submit" asp-page-handler="Login">Sign in</button>
 </form>

这里是这个 Razor 页面的代码隐藏方法:

public async Task<IActionResult> OnPostLogin()
 
            var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, false, false);
            // if successful login
            else if (result.Succeeded)
                Response.Redirect(Request.Path.ToString());

            // if unsuccessful
            else return RedirectToPage("/Account/LoginError");

            return Page();

当我点击登录按钮时,它甚至没有被击中。请记住,这不仅仅是此特定 POST 的问题。这是所有 POSTS 的问题(仅在 azure 应用服务上,不在 localhost 上)。

提前感谢您愿意提供帮助!

【问题讨论】:

【参考方案1】:

我创建了一个基于 ASP.NET 核心的 Razor Pages Web 应用程序。

Razor 页面处理程序:

控制器代码:

发布到 Azure 后,它可以在没有 404 的情况下工作。

获取:

发帖:

【讨论】:

为了确定原因,能否请您添加属性并在本地测试?请让我知道它是否有效。 @安德鲁史密斯 它已经在本地工作,没有[HttpPost]。当我添加此属性时,我收到一条警告说“无法将属性添加到 Razor 页面处理程序方法”。 我之前用错了项目,现在和你的一样。不幸的是,我没有重现该错误。您能否发布整个错误详细信息? @AndrewSmith【参考方案2】:

对不起大家耽误了!我在家里过节。

事实证明,POST 的问题在于我忘记向试图向数据库发布帖子的 Azure IP 地址授予正确的权限。它在本地运行良好,因为我正在使用具有正确权限的不同数据库。如果您不熟悉,以下是我将所有权限授予指定用户的方法。

GRANT ALL PRIVILEGES ON databaseName.* TO 'user'@'address';

FLUSH PRIVILEGES;

在那之后工作得很好。感谢大家的洞察力!

【讨论】:

以上是关于将 MVC 应用程序部署到 Azure 应用程序服务时出现 POSTS 问题的主要内容,如果未能解决你的问题,请参考以下文章

从 GitHub 持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

部署到 azure asp mvc 4 时捆绑不起作用

将 MVC 应用程序发布到 Azure 失败并出现 ERROR_NOT_SUPPORTED 错误

具有多个 Azure Web 应用程序的 SSO

将带有 SQL Server 数据库的 ASP.NET MVC 应用程序发布到免费的 Azure 帐户

将 Azure 托管标识用于部署到 Azure 的应用程序?