编程语言
首页 > 编程语言> > C#-ASP.NET MVC 4 API的终结点没有响应

C#-ASP.NET MVC 4 API的终结点没有响应

作者:互联网

我是ASP.NET MVC4的新手,但有一个我无法解决的问题.

我有一个简单的GET端点,我想返回所有预置站.

当我尝试到达此端点时,没有响应,甚至没有超时.我的API在其他端点上运行良好.

以下是与此端点相关的方法内的代码:

[Route("api/Prestations")]
// GET: api/Prestations
/// <summary>
/// Liste de toutes les prestations
/// </summary>
/// <returns></returns>
[ResponseType(typeof(List<Prestation>))]
public List<Prestation> GetPrestations()
{
    return db.Prestations.ToList();
}

我根本看不出为什么这不起作用.

一些帮助将不胜感激.

谢谢 !

解决方法:

根据这篇文章Handling Larger JSON String Values in .NET and Avoiding Exceptions,您可以尝试通过更改web.config来增加返回的JSON字符串的大小:

<configuration>  
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="86753090" />
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

您也可以尝试使用Newtonsoft.Json序列化结果,然后返回内容查看其是否有效.

[ResponseType(typeof(List<Prestation>))]
public ActionResult GetPrestations()
{
    var presentations = db.Prestations.ToList();
    return Content(JsonConvert.Seriazlize(presentations), "application/json");
}

但是总的来说,您不希望将整个表中的数据返回给客户端,因为它可能非常庞大并且包含数百万条记录.因此,您宁愿实现分页:

[ResponseType(typeof(List<Prestation>))]
public List<Prestation> GetPrestations(int skip = 0, int take = 100)
{
    return db.Prestations.OrderBy(p => p.IdPrestation).Skip(skip).Take(take).ToList();
}

标签:entity-framework-6,asp-net-mvc-4,c
来源: https://codeday.me/bug/20191211/2106139.html