Rest API并不总是被称为

时间:2015-07-21 23:19:31

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

我有一个带有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);
}

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

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:0)

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