繁体   English   中英

ASP.NET Web API无法序列化响应内容

[英]ASP.NET Web API failed to serialize the response content

我正在使用Entity Framework和WebApi开发有关学生和课程的UWP应用程序。 我的学生和课程之间有很多关系。 我尝试路由一个将学生及其课程与数据库表结合起来的操作。 我想获取有关学生的信息以及他们所注册课程的名称。

这是我的错误信息:

“ ObjectContent`1”类型未能序列化内容类型“ application / xml”的响应主体; charset = utf-8'。

这是我的自定义控制器文件中的我的自定义路线。

学生课程控制器

public class StudentsCoursesController : ApiController
{
    private DataContext db = new DataContext();

    //GET: api/Students/Courses
    [HttpGet]
    [Route("api/Students/Courses")]
    [ResponseType(typeof(Students[]))]
    public IHttpActionResult GetstudentsCourse()
    {
        var Student = from st in db.Students.Include("Courses")
                      select new { st.Id, st.FirstName, st.LastName, st.Courses };

        return Ok(Student);
    }
}

这是DataContext构造函数:

DataContext:

public DataContext() : base("Database")
    {
        Configuration.ProxyCreationEnabled = false;
        Configuration.LazyLoadingEnabled = false;
        Database.SetInitializer(new LibraryDBInitializer());
    }

这是我在Web Api中收到的错误消息:

来自我的Api的错误消息

我的代码没有任何错误,但也没有任何结果。 任何想法可能有什么问题吗? 我感觉到错误是在我的API代码(控制器)中。

  • 谢谢

您应该将LINQ查询转换为数组-

学生[]

我想获取有关学生的信息以及他们所注册课程的名称。

如果仅需要课程名称,则仅选择课程名称

var Students = db.Students.Include("Courses").Select(st =>
                  new { 
                      Id = st.Id, 
                      FirstName = st.FirstName, 
                      LastName = st.LastName, 
                      Courses = st.Courses.Select(course => course.Name).ToArray() 
                  }).ToArray();

这是一个序列化问题。

就像在这个答案中说的那样,默认情况下您不能将匿名类型序列化为xml。

在您的客户中,将内容类型更改为“ application / json”

暂无
暂无

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

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