小编jan*_*kjf的帖子

C#Async/Await在MVC4中永远不会响应

我一直在努力与异步/等待一周.一些背景知识:下面的代码是MVC4网站项目的一部分.该网站发生了大量的API调用.目标是使这些API调用并行发生而不是同步,以提高站点响应能力.现在所有API调用都相互阻塞.因此,如果一个页面需要4个调用...更长的加载时间.

我已经为所有API调用的同步和异步版本构建了单独的方法.我遇到的问题是await永远不会响应.我认为这与这个问题有关.但是,我真的不确定如何解决它.我已经尝试过ConfigureAwait(false),这对我没有帮助.

这是代码:

控制器中的初始调用看起来像这样:

BaseData bdata = API.GetBaseData().Result;
Run Code Online (Sandbox Code Playgroud)

我很乐意在这里使用await,但是如果没有AsyncController这不是一个选项,由于需要请求/响应访问,我们无法使用它.其他方法在API类中:

internal static async Task<BaseData> GetBaseData() {
    var catTask = GetParentCategoriesAsync();
    var yearTask = GetYearsAsync();

    await Task.WhenAll(new Task[] { catTask, yearTask });

    var bdata = new BaseData {
        years = await yearTask,
        cats = await catTask
    };
    return bdata;
}

internal static async Task<List<APICategory>> GetParentCategoriesAsync() {
    try {
        WebClient wc = new WebClient();
        wc.Proxy = null;

        string url = getAPIPath();
        url += "GetFullParentCategories";
        url += "?dataType=JSON";

        Uri targeturi = new …
Run Code Online (Sandbox Code Playgroud)

c# async-await asp.net-mvc-4 .net-4.5

5
推荐指数
1
解决办法
1310
查看次数

标签 统计

.net-4.5 ×1

asp.net-mvc-4 ×1

async-await ×1

c# ×1