繁体   English   中英

如何使用后异步调用的响应?

[英]How do I use the response from a postasync call?

我有一个具有PostStudent方法的webApi设置。 API调用工作正常,并在数据库中创建了一个新学生,但是我无法获得它来返回响应正文中的值。 我尝试返回Ok(newStudent)和Created(“〜/ api / poststudent”,newStudent),但是它们都没有返回我需要的newStudent值。

我经历了所有的响应,找不到实际的newStudent对象。 它在那里吗?我只是想念它,还是我的代码有问题?

这是API中的PostStudent方法;

var newStudent = new Student
{
  studentId = nextStudentId,
  studentFirstName = studentEntry.StudentFirstName,
  studentLastName = studentEntry.StudentLastName,
  studentDOB = studentEntry.StudentDob,
  studentEmergencyContactName = studentEntry.StudentEmergencyContactName,
  studentEmergencyContactNum = studentEntry.StudentEmergencyContactNum,
  ticketNumber = studentEntry.TicketNumber
};

db.Student.Add(newStudent);

try
{
  db.SaveChanges();
}
catch (DbUpdateException)
{
  if (StudentExists(newStudent.studentId))
    return BadRequest("That student id already exists");
    throw;
}
return Ok(newStudent.studentId);
// return Created("~/api/poststudent", newStudent);     
}

这是我调用postasync并尝试保存响应正文的地方。

var response = client.PostAsync("api/poststudent", content);
return response.Result.Content.ReadAsStringAsync().ToString();

这就是我要使用值的地方;

var newStudentId = controller.PostStudent(studentFirstName, studentLastName, studentDob, ticketNumber);
var url = "~/AddGuardian/AddGuardian/" + newStudentId;
Response.Redirect(url);

我希望有一个人可以帮助我。 我从没想过重定向到另一个页面会这么难!

干杯。

您不等待 async调用:

var response = await client.PostAsync("api/poststudent", content);
return (await response.Result.Content.ReadAsStringAsync()).ToString();

有2个官方教程可用于快速启动ASP.NET WebApi项目。

我想建议您完成这些工作。 如果发现应用程序做错了事,请针对这些示例修复应用程序。 如果您的要求与示例中给出的要求不同,则可以在问题中强调这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM