【问题标题】:Break point not being hit on controller but data from controller is returned断点未在控制器上命中,但返回来自控制器的数据
【发布时间】:2016-07-23 16:48:30
【问题描述】:

我正在使用淘汰 Java 脚本,并且我有一个对控制器的 api 调用,这个控制器有许多方法都可以正常工作 但是,当我在一种特定方法上放置断点时,它永远不会达到该断点。这令人难以置信,因为当我在我的 java 脚本中放置一个断点时,我可以看到有数据从控制器中的特定方法返回。有谁知道是什么原因造成的?

这是我的淘汰赛

function FetchDeviceRows(dtvm, item) {
    $.when(getSecureData("/api/DeviceHierarchy?parentCostCentreId=" + item.assetInstanceId() + "&noChildren=" + item.noChildren() + "&orgLevel=" + item.orgLevel()))
    .done(function (rows) {
        InsertActualDeviceRows(dtvm, item, rows);
        RefreshWholeDevicePage(dtvm);
    });
}

这是我的 DeviceHierachy Controller 方法,我的淘汰赛正在访问它。这里的断点没有被击中,但是当我设置一个断点时 .done(function (rows) 在我的淘汰赛中显示它已返回数据

[HttpGet]
public IEnumerable<DeviceHierarchyRow> Get(int parentAssetInstanceId, int noChildren, int orgLevel)
{
    var hierarchies = _deviceHierarchyRepository.GetDevices(parentAssetInstanceId, noChildren);
    return hierarchies.ToList().Select(h => new DeviceHierarchyRow(orgLevel + 1, 0, 0, "", "", h.noChildren, _pageSize, false));
}

【问题讨论】:

  • 浏览器是否使用了缓存结果?
  • 我已经清除了我的缓存,所以我认为这不是问题
  • 您在 javascript 代码中的参数与 api 控制器操作中的参数名称不匹配。您可能正在控制器中执行另一个操作。在每个动作中放置一个断点,看看它命中了哪一个

标签: javascript asp.net asp.net-mvc api knockout.js


【解决方案1】:

您的查询字符串无效。
由于您尚未在 Web api 上为参数 parentAssetInstanceId 设置默认值,这意味着它是默认参数,并且由于您正在传递 parentCostCentreId,因此 api 无法找到 parentAssetInstanceId 的值并返回 500 内部服务器错误,你应该在你的 js 控制台中看到这个。除非你有另一个 get 方法然后接受 parentCostCentreId 在这种情况下你的断点在错误的地方。

【讨论】:

  • 谢谢你说得很对,我犯了一个愚蠢的错误
  • @Zidane 没问题,我自己做过很多次,并且学会了始终打开你的控制台
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2017-11-18
  • 2011-01-20
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多