例外:无法在ASP.Net MVC 5 Web Api中序列化响应主体

时间:2017-10-02 01:22:53

标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-mvc-5

所以,我正在学习如何在ASP.Net MVC 5中创建一个Web Api。我被困在一个地方,需要指导。

采取的措施:

  • 在Controller Folder中创建一个API文件夹,然后在文件" ResumesController.cs"在里面。

ResumesController.cs

public class ResumesController : ApiController
{
    private ApplicationDbContext _context;

    public ResumesController()
    {
        _context = new ApplicationDbContext();
    }

    //GET /api/resumes
    public IEnumerable<Resume> GetResumes()
    {
        var candidateId = User.Identity.GetUserId();
        var resumeList = _context
            .Resumes.Where(r => r.CandidateId == candidateId)
            .OrderByDescending(r => r.datetime);

        return resumeList;
    }

}

Global.asax中

 protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

Url赞成:

http://localhost:44395/api/resumes

错误讯息:

  

&#39; ObjectContent`1&#39;类型无法序列化内容类型&#39; application / xml的响应正文;字符集= UTF-8&#39;

enter image description here

非Api尝试:正常工作

  public ActionResult ResumeCenter()
        {
            var candidateId = User.Identity.GetUserId();
            var resumeList = _context
                .Resumes.Where(r => r.CandidateId == candidateId)
                .OrderByDescending(r => r.datetime);

            return View(resumeList);
        }

文件夹和文件结构:

enter image description here

问题1:我正在通过教程学习,但我不明白为什么需要拨打api/resumes?我不需要打电话给/api/GetResumes吗?

问题2:为什么我无法看到返回的数据的XML视图?

P:S:API控制器操作中出现了断点。

尝试1:

 protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        GlobalConfiguration.Configuration.Formatters
            .Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

0 个答案:

没有答案