首页 > 解决方案 > 异步 API 请求在 ASP.NET 框架中不起作用

问题描述

我创建了一个 Async Newegg API 请求,它在 .NET Core 控制台应用程序中运行良好。但是,在 ASP.NET Framework Web 表单中使用相同的异步会返回“无效值异常”。显然请求正在通过,但是,有一些格式问题阻止我像在控制台应用程序中那样正常读取数据。请指教。

//in this class we will authenticate our Newegg API
namespace NeweggAPI_Orders
{
    public class Newegg
    {
        private OrderCall orderCall;
        public Newegg()
        {
            Debug.WriteLine("newegg config");
            APIConfig config = APIConfig.FromJsonFile(@"C:\Users\****\source\repos\NeweggAPI_Orders\NeweggAPI_Orders\JSONSettings\setting.json");            
            APIClient client = new APIClient(config);
            orderCall = new OrderCall(client);           
        }

        public async Task GetOrderStatusAsync()
        {
            Debug.WriteLine("GetOrderStatusAsync");
            await LoadSomeData();
        }

        public async Task LoadSomeData()
        {
            Debug.WriteLine("load some data");
            try
            {
                var orderstatus = await orderCall.GetOrderStatus("105137040").ConfigureAwait(false);
                Debug.Write(orderstatus.ToStringWithNonSpace());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

        }
}

和 Default.aspx.cs

namespace NeweggAPI_Orders
{
    public partial class _Default : Page
    {        
        protected void Page_Load(object sender, EventArgs e)
        {
            RegisterAsyncTask(new PageAsyncTask(GetOrderAsync));
        }

        private async Task GetOrderAsync()
        {
            Debug.WriteLine("main page: getorderasync");
            var NewEGG = new Newegg(); //initialize + config newegg client
            await NewEGG.GetOrderStatusAsync();
        }
    }
}

堆栈跟踪如下:

   at Newegg.Marketplace.SDK.Base.BaseCall.<ProcessResponse>d__12`1.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Newegg.Marketplace.SDK.Order.OrderCall.<GetOrderInformation>d__6.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at NeweggAPI_Orders.Newegg.<LoadInfo>d__5.MoveNext() in C:\Users\Vinotronics_2021\source\repos\NeweggAPI_Orders\NeweggAPI_Orders\Newegg.cs:line 100

标签: c#asp.netapiasync-await

解决方案


推荐阅读