为什么我的 ModelState.AddModelError 在 await HttpClient.PostAsync() 之前工作而不是之后?

问题描述

我正在开发一个项目,该项目为我的前端设置了一个 aspnet 核心 Web 应用程序,并为我的后端设置了一个 aspnet 核心 Web API。我目前正在登录屏幕上工作,除了添加 ModelError 之外,一切都进行得很顺利。如果无法解析电子邮件,则会触发模型错误。 (所以格式不正确)。然后,如果密码不正确,我希望能够解雇相同的人。这就是我的问题出现的地方。电子邮件验证工作完美。但是当我尝试触发那个说密码错误的人时,它不会显示在我的视图中。

public async void OnPost(UserDataModel model)
    {
        Console.WriteLine(string.Format("Email : {0}\nPassword : {1}",model.Email,model.Password));
        
        //This works if the email is not parsable
        if (isValidEmail(model.Email) == false) {
            this.ModelState.AddModelError("loginError","Login Error. Please verify your login credentials and try again!"); 
            return;
        }
       
        string receivedContent;
     

        using (var handler = new httpclienthandler())
        {
            handler.ServerCertificateCustomValidationCallback = httpclienthandler.DangerousAcceptAnyServerCertificateValidator; //This is just for testing while in development

            var httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.Accept.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            httpClient.DefaultRequestHeaders.Add("ApiKey","0263afb0-0347-460c-8778-9dc429fc9063");

            var content = JsonConvert.SerializeObject(model);
            var stringContent = new StringContent(content,UnicodeEncoding.UTF8,"application/json");


            var task = await httpClient.PostAsync(new Uri("https://192.168.7.235:5003/Login"),stringContent);
            receivedContent = await task.Content.ReadAsstringAsync();

        }
        //Quotes surround the response but this removes it. This if block fires for sure based on the Console.Writeline
        if (receivedContent.Replace("\"","") == "PasswordNotValid") 
        {
            Console.WriteLine("Update model state");
            this.ModelState.AddModelError("loginError","Login Error. Please verify your login credentials and try again!");
        }
    }

编辑: 我已经移动了我的 ModelState 更新方法。它似乎只在 await httpClient.PostAsync() 方法之前有效。希望这有助于回答我的问题,因为我对异步方法不是很熟悉。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)