ASP.NET Core 2.2 Razor Pages为什么OnPost()有效,但OnPostAsync()不起作用?

时间:2019-03-12 11:45:01

标签: c# asp.net-core razor-pages

请有人解释为什么OnPost()有效,但OnPostAsync()无效。另一位post表示没有什么区别,但似乎有...

这有效

public async Task<IActionResult> OnPost()
{
   LoggedInUser = await _userManager.GetUserAsync(User);
   if (LoggedInUser == null)
      SetPageStatusMsg("No user logged in");
   else
      SetPageStatusMsg($"{LoggedInUser.UserName} is logged-in");

   return Page();
}

但这甚至没有被调用

public async Task<IActionResult> OnPostAsync()
{
   LoggedInUser = await _userManager.GetUserAsync(User);
   if (LoggedInUser == null)
      SetPageStatusMsg("No user logged in");
   else
      SetPageStatusMsg($"{LoggedInUser.UserName} is logged-in");

   return Page();
}

也许这是Core 2.2的事情,但是没有错误,因为我们从未在Core 2.2中犯过错误;-)

1 个答案:

答案 0 :(得分:-1)

不能同时使用OnPostAsync和OnPost处理程序方法,如果尝试同时使用OnPostAsync和OnPost处理程序方法,则会发生以下错误:

处理请求时发生未处理的异常。 InvalidOperationException:多个处理程序匹配。以下处理程序匹配路由数据并满足所有约束:Microsoft.AspNetCore.Mvc.IActionResult OnPost(),System.Threading.Task'1 [Microsoft.AspNetCore.Mvc.IActionResult] OnPostAsync()

因此,要解决此问题,您可以使用一个OnPostAsync或OnPost。 这是更多信息:maintainer scripts