当前位置: 首页 > 知识库问答 >
问题:

我无法使用ASP.NET MVC中的异步调用[重复]

吴峰
2023-03-14
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Contact(LoginViewModel objmodel, string returnUrl)
    {
        LoginViewModel model = new LoginViewModel();

        if (!ModelState.IsValid)
        {
            return View(model);
        }

        string mode = "User_Login";
        //string userLoginName = "test";
        //string userPassword = "test";
        string userLoginName = model.UserName;
        string userPassword = model.Password;

        ObjectParameter returnParams = new ObjectParameter("Params", typeof(string));
        DBECRF_01Entities3 ent = new DBECRF_01Entities3();

       string outparam = (ent.Sp_UserLogin(mode, userLoginName, userPassword, returnParams)).ToString();

        switch (outparam)
        {
            case "Success":
                return View("Contact");
            case "Failure":
                return View("Lockout");
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }

       // return View("Index", model);
    }

此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。

像这样。

共有1个答案

劳烨
2023-03-14

如果您必须创建一个异步方法,那么您确实需要在其中包含异步内容(一个需要未知时间才能执行的调用),比如数据库调用,并且在前面使用await(您的错误消息建议):

public async Task<Stuff> GetStuff()
{
   return await db.GetAllStuff();
}

如果在方法中不能有任何异步调用,那么最好的实践是“不要撒谎”,让它保持同步:在您的情况下,替换

async Task<ActionResult>

ActionResult
await Task.Delay(100);
 类似资料:
  • 同步调用异步方法最安全的方法是什么?

  • 我有一些异步服务,我想在 Xamarin 应用程序的不同位置调用这些服务。我使用 Prism 从本机 UWP 应用移植我的代码。 前段时间,我能够通过声明制作方法来做到这一点,例如 或者 在那里等候。然而,它停止了工作。 尝试使用GetAwaiter()。GetResault()会阻止执行并导致死锁。 这有点奇怪,考虑到INavigationService.NavigateAsync本身是异步方法

  • 以下是我尝试使用“可完成未来”类实现的用例 我有一个id列表,我想为每个id调用api 我想从api调用中获得响应,并将其保存在列表或映射中,以便进一步处理 我也不想等到得到所有api调用的响应。我想设定一个时间限制,并在那之前获取所有可用的数据 我尝试了以下代码,但它不能正常工作 您能指导我这个用例吗?我需要 1.超时设置为 2。异步数据处理 3.未知的项目数。 我正在使用Java 8。 谢谢。

  • 为了实现上面的逻辑,我需要客户机发送他的监听器信息和请求(基本上是URI)。这是在处理完请求后,将请求状态更新到客户端。 使用JAX-RS处理长时间运行的操作