【问题标题】:Rest API is not always called并不总是调用 Rest API
【发布时间】:2015-07-22 23:39:48
【问题描述】:

我有一个带有 webClient 和 webAPI 的单页应用程序。当我转到一个有表格的视图时,我的表格没有被更新。实际上,该 API 仅在应用程序启动时被调用一次,即使假设每次都会调用它,或者我预期会发生什么。

服务代码-

function getPagedResource(baseResource, pageIndex, pageSize) {
    var resource = baseResource;
    resource += (arguments.length == 3) ? buildPagingUri(pageIndex, pageSize) : '';
    return $http.get(serviceBase + resource).then(function (response) {
        var accounts = response.data;
        extendAccounts(accounts);
        return {
            totalRecords: parseInt(response.headers('X-InlineCount')),
            results: accounts
        };
    });
}

factory.getAccountsSummary = function (pageIndex, pageSize) {
    return getPagedResource('getAccounts', pageIndex, pageSize);
};

API 控制器 -

[Route("getAccounts")]
[EnableQuery]
public HttpResponseMessage GetAccounts()
{
    int totalRecords;
    var accountsSummary = AccountRepository.GetAllAccounts(out totalRecords);
    HttpContext.Current.Response.Headers.Add("X-InlineCount", totalRecords.ToString());
    return Request.CreateResponse(HttpStatusCode.OK, accountsSummary);
}

我可以将它追踪到服务,但它不会在控制器中遇到断点。

【问题讨论】:

  • 你确定你的后续调用不是简单地被缓存,因此在第一次请求后永远不会命中控制器吗?尝试在控制器端添加these set of response headers,看看有没有效果。
  • factory.getAccountsSummary 函数何时被调用?
  • factory.getAccountsSummary 在控制器的 Init() 上被调用。

标签: angularjs rest asp.net-web-api


【解决方案1】:

我将此添加到我的 REST API 项目的 web.config 文件中,现在它可以按我的需要工作 -

  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
        <!-- HTTP 1.1. -->
        <add name="Pragma" value="no-cache" />
        <!-- HTTP 1.0. -->
        <add name="Expires" value="0" />
        <!-- Proxies. -->
      </customHeaders>
    </httpProtocol>
  </system.webServer>

感谢大家为我指明正确的方向!

【讨论】:

    【解决方案2】:

    我怀疑 REST 服务响应在第一次调用时被缓存在您的浏览器中。因此,在 REST 服务端添加标题以响应不缓存它或在您的请求中添加一些额外的可变参数(如时间戳)以确保浏览器不会获取响应表单缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2011-05-29
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多