3

我的网站建立在 WebAPI 后端...部署时出现问题,因为我们的 IIS 部署/站点结构导致我的 Uri 格式不正确

错误的

http://itil.mysite.com/api/Building

http://itil.mysite.com/TestSite/api/building

所以我修改了我的 http helper 以包含一个 baseUri 像这样

    define(function () {
        var baseUri = window.AppPath;
        return {
            baseUri: baseUri,
            defaultJSONPCallbackParam: 'callback',
            get: function (url, query) {
                return $.ajax(baseUri + url, { data: query });
            },
     ...
     });

在我的 Index.cshtml 上添加了以下内容来设置 root/baseUri 路径:

var AppPath = '@string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"))';
console.log('AppPath: '+AppPath);

当我从 Index.cshtml 将 baseUri 路径记录到控制台时,它是正确的:EG。

AppPath: http://itil.mysite.com/TestSite/ 

但是当我进行实际的 api 调用(来自我部署的实例)时,它仍然使用旧的 Uri..

http.get('api/building').done(viewInit);

还是错了

http://itil.mysite.com/api/building

我的下一个想法是必须以某种方式缓存文件,所以我尝试了以下方法:

  • 多次重启IIS,
  • 删除和重新部署的文件
  • 禁用 chrome 中的缓存,
  • 在 IIS(用户模式和内核模式)中禁用 .js 缓存,
  • 重新启动我的电脑
  • 修改了 ScriptBundle 以尝试强制它(因为缺少更好的词)不同步,然后将我的代码添加回来

当我使用我的 Visual Studio 开发服务器时,代码可以工作,但我在本地 IIS 和 Alpha 测试站点上遇到了同样的问题......没有运气。

我到底如何清除已部署站点上的缓存:/ 这已经到了事情似乎有点荒谬的地步。要么我失去它,要么“大家伙”讨厌我。

4

1 回答 1

0

叹息..我第二次被这个抓住了。我认为我的问题与 MVC 相关,它与 Durandal 部署相关:P

请注意阅读本文的每个人。

一旦你部署了一个 Durandal 项目,如果你修改了任何现有的 javascript 文件或 main.js。记得运行optimizer.exe

...\App\durandal\amd\optimizer.exe
于 2013-07-16T11:37:11.200 回答