【问题标题】:ASP.NET Web API 2 ApiController.Ok() not working, causing timeoutASP.NET Web API 2 ApiController.Ok() 不工作,导致超时
【发布时间】:2017-06-01 18:26:02
【问题描述】:

当客户端应用程序请求时,会发生超时。 我设置断点检查参数是否在控制器方法中输入良好,看起来很好。

即使过了一段时间,System.AccessViolationException 也会出现,我的应用程序崩溃了。

我的控制器代码在这里。

namespace REST_API_EX.Controllers 
{
    public class DeliveriesController : ApiController
    {
        private DatabaseContext db = new DatabaseContext();

        [ResponseType(typeof(Delivery))]
        public async Task<IHttpActionResult> GetDeliveryByOrder_No(string Order_No)
        {
            Delivery delivery = await db.Deliveries
                .Where(d => d.Order_No == Order_No)
                .FirstAsync();
            if (delivery == null)
            {
                return NotFound();
            }
            return Ok(delivery);
        }
    }
}

【问题讨论】:

  • Delivery 类是什么样的?
  • 这类问题通常与复杂的对象结构有关(带有循环引用或许多嵌套的导航属性),在 json 中序列化时会造成很大的麻烦。为了排除这类问题,我强烈建议您将返回类型映射到更简单的对象中,其中仅包含客户端所需的属性。

标签: c# asp.net entity-framework-6 asp.net-web-api2


【解决方案1】:

因为您使用的是 EF6。 试试

public class DeliveriesController : ApiController{
db.Configuration.LazyLoadingEnabled = false

// Your Code

}

因为 EF 尝试加载引用但最终在其中循环。

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 2018-03-21
    • 2014-09-17
    • 1970-01-01
    • 2014-06-19
    • 2018-05-11
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多