C# 如何使用postasync呼叫的响应?

C# 如何使用postasync呼叫的响应?,c#,json,asp.net-web-api,httpresponsemessage,C#,Json,Asp.net Web Api,Httpresponsemessage,我有一个webApi设置,它有一个PostStudent方法。API调用工作正常,并在DB中创建一个新的student,但我无法让它在响应体中返回值。我尝试返回Ok(newStudent)并创建(“~/api/postsudent”,newStudent),但它们都没有返回我需要的newStudent值 我已经浏览了所有的回复,找不到真正的newStudent对象。它在那里,我只是错过了它,还是我的代码有问题 这是API中的博士后方法 var newStudent = new Student {

我有一个webApi设置,它有一个PostStudent方法。API调用工作正常,并在DB中创建一个新的student,但我无法让它在响应体中返回值。我尝试返回Ok(newStudent)并创建(“~/api/postsudent”,newStudent),但它们都没有返回我需要的newStudent值

我已经浏览了所有的回复,找不到真正的newStudent对象。它在那里,我只是错过了它,还是我的代码有问题

这是API中的博士后方法

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);
我希望有人能帮助我。我从来没有想到重定向到另一个页面会如此困难

干杯。

您没有在等待
异步
呼叫:

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

有两个关于快速启动ASP.NET WebApi项目的官方教程


我想推荐你通过这些来完成。如果您发现您的应用程序出错,请针对这些示例修复您的应用程序。如果您的要求与样品中给出的不同,您可以在问题中强调这一点

我确实在那里等过,但不知什么原因,它被挂了起来。我只是出于沮丧才删除了它们,但从那以后它就开始工作了。@Schming:它是在你删除了
wait
关键字之后开始工作的?这似乎不太可能。但即使是这样,还有什么不起作用呢?不,我也不明白,尽管我对异步编程还很陌生。当我创建一个新学生时,db将分配一个新的studentId。我想在重定向url中使用该id作为参数。调试时,我在响应中的任何位置都找不到该id,因此我无法确定如何完成我的任务url@Schming:响应中是否应包含ID?服务器端代码显示它仅用于重定向的URL。这将出现在响应的标题中,而不是内容中。请将上下文添加到这3个片段中,以显示web api控制器和web api客户端代码的例外-至少是文件和方法名称。清晰的代码结构有助于读者理解您的代码。我不明白控制流是如何到达第三个代码段的。我开始将答案链接到官方教程。我特别不清楚你对第三段的期望是什么。通常,ASP.NET MVC应用程序中的代码重定向是使用RedirectToAction()完成的