邮递员未返回异步呼叫

时间:2020-09-17 13:38:46

标签: asp.net api asynchronous postman

我无法通过邮递员从Webform异步方法返回列表。它会永远持续下去。 我在这里错过了一些非常棘手的东西吗?

页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    RegisterAsyncTask(new PageAsyncTask(testAsync));

    if (Request["Act"] == "testAsync")
    {
        Response.Write(JsonConvert.SerializeObject(testAsync()));
        Response.End();
    }
}

方法:

private async Task<List<string>> testAsync()
{
    List<string> list = await Task.Run(() => {
        var _return = new List<string>();
        _return.Add("1");
        _return.Add("2");
        return _return;
    });

    return list;
}

然后我将aspx页面标记为 Async =“ true”

这是邮递员http:// localhost:65008 / services / carrental / callBackHandler.aspx?act = testAsync 中的URL

解决方案 在E.J. Brennan建议之后,我已经更新了我的代码。有效。首先,我调用了async方法,然后在方法执行后返回了List。

PageLoad

    protected void Page_Load(object sender, EventArgs e)
{
    RegisterAsyncTask(new PageAsyncTask(testAsync));

    if (Request["Act"] == "testAsync")
    {
        var a = testAsync();
    }

}

方法

    private async Task<List<string>> testAsync()
{
    List<string> list = await Task.Run(() => {
        var _return = new List<string>();
        _return.Add("1");
        _return.Add("2");
        return _return;
    });

    Response.Write(JsonConvert.SerializeObject(list));
    Response.End();

    return list;
}

1 个答案:

答案 0 :(得分:2)

您正在异步调用'testAsync'函数,但立即调用response.end-您需要等待testAsync()函数完成,否则在该函数有机会运行之前发送response.end