首页 > 解决方案 > TaskContinuation.cs 访问 WebAPI 任务时未发现异常

问题描述

我正在尝试从客户端应用程序的数据库游标中获取记录。调试 Web API 显示光标返回记录,但是当返回到客户端时,它会抛出mscorlib.pdb 未加载窗口并单击加载选项,它会抛出TaskContinuation.cs 未找到异常

代码片段如下(为了可读性删除了不相关的代码)

网络API

 [HttpPost("{values}")]
            public async Task<ActionResult> Post([FromBody] JToken values)
            {
                // code removed for readility 
                string[] cursors = { };
                cursors = await cursor.GetRpts();
                CursorClass firstCursor = JsonConvert.DeserializeObject<CursorClass>(cursors[0]);

                return new OkObjectResult(cursors);
            }

        public async Task<string[]> GetRpts()
            {
                try
                {
                    DataTable[] dataTables;
                    CursorClass[] cursorClasses = new CursorClass[5];
                    //stripped some code

                    using (DataAccess dataAccess = new DataAccess()
                    {
                        ParamData = PrepareDoc(),
                        ProcedureName = Constants.Rpt,
                        RecordSets = this.CursorNumbers,
                    })
                    {
                        Int32 errorNumber = await dataAccess.RunComAsync();
                        dataTables = dataAccess.TableData;

                    };


                   //fetching code stripped off

                    string[] _cursors = Array.ConvertAll(cursorClasses, JsonConvert.SerializeObject);


                    return _cursors;
                }
                catch (Exception ex)
                {
                    string tt = ex.Message;

                }

            }


     public async Task<Int32> RunComAsync()
            {
                Int32 returnValue = 0;
                try

                {
            //open db connection

                    //---------- Running the Command in asysnc mode ----------
                    Task<int> task = new Task<int>(oracleCommand.ExecuteNonQuery);
                    task.Start();
                    returnValue = await task;
                    //--------------------------------------------------------

                    OracleRefCursor[] refCursor = { null, null, null, null, null };

                    for (int _sub = 0; _sub < RecordSets; _sub++)
                    {
                //DT declaration / connection code removed

                          dataAdapter.Fill(dataTable, refCursor[_sub]);
                          TableData[_sub] = dataTable;

                    }

                }
                catch (Exception ex)
                {
                    return LogMsg(ex);

                }
                finally
                {
                    this.Dispose(true);

                }
                CloseConnection();
                return LogMsg(null,"Successful Operation");

            }

客户

private async Task<HttpStatusCode> CallService()
        {
            HttpResponseMessage _response = null;
            try
            {

                using (HttpRequestMessage requestMessage = new HttpRequestMessage()
                {
                    Content = new System.Net.Http.StringContent(JsonRepo, System.Text.Encoding.UTF8, HeaderJson),
                    RequestUri = new Uri(UriString),
                    Method = HttpMethod.Post, 
                })
                {
                   requestMessage.Headers.Authorization =  new AuthenticationHeaderValue("Bearer", Utils.TOKEN) ;

                    _response = await httpClient.SendAsync(requestMessage);

                    if (_response.IsSuccessStatusCode)
                    {
           string httpResponse = await _response.Content.ReadAsStringAsync();

                            httpString = JsonConvert.DeserializeObject<string[]>(httpResponse);
                    }

                }
            }


            return ErrorCode;

        }

这与异步操作有关吗?在调试 API 时,它会使用记录确认 Datatable。任何投入都深表感谢。

错误图像 TIA

标签: asp.net-web-apiasync-awaitasp.net-core-mvctask

解决方案


推荐阅读