Web 表单 aspx - PostAsync Web API

问题描述 投票:0回答:1
  1. 我有一个 Web 表单应用程序调用 Web API 后操作,但它不起作用。
  2. 从 Swagger 和 Postman 调用 Post 操作正在运行。所以我认为问题不在于 Web API。
  3. 已尝试使用 PostAsJsonAsync 函数,但结果是相同的。
  4. 执行挂在“HttpResponseMessage response = wait client.PostAsync("api/create", RawText);”行
  5. 请帮忙

网页表单方法

        public async Task<CSSetup> CSCreateSetup(CSAudit TempAudit)
        {
            using (var client = new HttpClient())
            {
                var APIPath = Session["APIPath"].ToString();
                CSSetup TempSetup = new CSSetup();

                //Content
                var json = JsonConvert.SerializeObject(TempAudit);
                var RawText = new StringContent(json, UnicodeEncoding.UTF8, "application/json");

                //HttpClient
                client.BaseAddress = new Uri(APIPath);
                HttpResponseMessage response = await client.PostAsync("api/create", RawText);
                if (response.IsSuccessStatusCode)
                {
                    TempSetup = await response.Content.ReadAsAsync<CSSetup>();
                }
                else
                {
                    Session["Message"] = "Error creating setup";
                }

                return await Task.FromResult(TempSetup);
            }
        }

行动后

        [HttpPost]
        [Route("Create")]
        public async Task<ActionResult> CreateSetup(CSAudit TempAudit)
        {
            try
            {
                return Ok(await setupManager.CSCreateSetup(TempAudit));
            }
            catch (Exception)
            {
                return StatusCode(StatusCodes.Status500InternalServerError,  "Error creating setup object");
            }
        }

调用CreateSetup

        protected async void BtnSave_Click(object sender, EventArgs e)
        {
            var TempAudit = new CSAudit("ADMIN", DateTime.Now.ToString("yyyyMMdd"));
            CSSetup TempSetup = (CSCreateSetup(TempAudit)).Result;
        }

我尝试过的

  1. 创建了 Web API Post 操作和 Web 表单方法来使用 Post 操作
  2. 我期望 Web 表单数据发布提供的数据并返回预期的数据
asp.net-web-api webforms
1个回答
0
投票

@Dai,一百万谢谢。我已将调用转换为包含结果并删除了等待

旧代码

HttpResponseMessage response = await client.PostAsync("api/create", RawText);

新代码

HttpResponseMessage response = client.PostAsync("api/create", RawText).Result;
© www.soinside.com 2019 - 2024. All rights reserved.