C# 通过调用异步方法上的.Result,可以在HTTP POST中获取请求吗?

C# 通过调用异步方法上的.Result,可以在HTTP POST中获取请求吗?,c#,python,flask,http-post,http-get,C#,Python,Flask,Http Post,Http Get,我有一个调用API GET请求并返回布尔值的服务 Task<bool> LoginExist(string email, string password); 然而,当我测试它时,在我单击Login(它触发post请求)之后,我可以告诉您GET在我的flask api中成功执行(它返回状态200),但是,它从来不会转到上面代码中的IF语句或ELSE语句。相反,它只是一直在运行 我想知道我们是否可以使用GetinthePost,如果不行,有没有更好的方法 我在服务中添加了以下内容:

我有一个调用API GET请求并返回布尔值的服务

Task<bool> LoginExist(string email, string password);
然而,当我测试它时,在我单击Login(它触发post请求)之后,我可以告诉您GET在我的flask api中成功执行(它返回状态200),但是,它从来不会转到上面代码中的IF语句或ELSE语句。相反,它只是一直在运行

我想知道我们是否可以使用GetinthePost,如果不行,有没有更好的方法

我在服务中添加了以下内容:

    public async Task<bool> LoginExist(string email, string password)
    {
        string url = string_url;
        LoginVerification str = await url.WithHeaders(new { Accept = "application /json", User_Agent = "Flurl" }).GetJsonAsync<LoginVerification>();

        return str.login_valid;
    }
公共异步任务登录列表(字符串电子邮件、字符串密码)
{
字符串url=字符串\ url;
LoginVerification str=wait url.WithHeaders(new{Accept=“application/json”,User_Agent=“Flurl”}).GetJsonAsync();
返回str.login\u有效;
}

这里的问题与GET vs.POST无关。这就是如何使用异步方法。直接访问
Result
属性不是获取异步任务结果的正确方法

将其更改为调用
GetAwaiter
GetResult
,如下所示:

bool login_result = _accountService.LoginExist(email, password).GetAwaiter().GetResult();
或者更好的方法是,使您的操作方法
async
,并使用
wait
关键字等待结果

[HttpPost]
public async Task<ActionResult> Login(string email, string password)
{
    // ...
    bool login_result = await _accountService.LoginExist(email, password);
    // ...
}
[HttpPost]
公共异步任务登录(字符串电子邮件、字符串密码)
{
// ...
bool login\u result=wait\u accountService.LoginExist(电子邮件、密码);
// ...
}

通过这种方式,你的意图会更清晰,也更容易把事情做好。

一个get就是一个get,一个POST就是一个POST。POST可以返回数据。你的问题是什么?@John所以我使用GET调用返回json字典的api,我需要知道这个json字典的值['login\u valid']。并将其视为布尔值(结果为true或false)。问题是,当我在HTTPPOST中调用这个布尔值时,它似乎不起作用。如果这是无法解决的,我不知道如何在controller中进行用户身份验证。我尝试了调用GetWaiter和GetResult的第一种方法,但它似乎不起作用。似乎如果我摆脱bool登录结果,它将开始正常工作…也许服务出了问题?谢谢你救了我一个晚上!第二种方法奏效了!
[HttpPost]
public async Task<ActionResult> Login(string email, string password)
{
    // ...
    bool login_result = await _accountService.LoginExist(email, password);
    // ...
}