1

在我的 Web.API 项目中,为了在 Web 设置中进行开发,我使用http://localhost/reporter本地 IIS Web 服务器上的“项目 URL:”。该站点使用 asp.net mvc4 提供了一些页面,这些页面使用 javascript 调用发布到诸如“api/getdata/”之类的 url。

出于某种原因,这些已经停止工作——例如,我会在 'api/getdata' 上发布一个 jQuery 帖子,并且完整的 URLhttp://localhost/reporter/api/getdata是正确的。生活很好。

但是现在有些事情发生了变化——同样的 jQuery 帖子,我所知道的代码中没有什么不同,但我的完整 URL 现在是http://localhost/api/getdata——我失去了那个“记者”部分。我认为当我将它部署到另一台内部服务器时可能发生了一些事情——它在本地运行良好——然后我部署并注意到它在新服务器上不起作用。然后我发现我不再在本地工作了。

我已经仔细检查过,我的项目配置似乎和以前一样......?

我确定我弄坏了一些东西,但我不知道是什么。想法?

4

1 回答 1

1

首先,我建议使用诸如 Fiddler 之类的工具或您的 Web 浏览器的开发工具来进行网络跟踪并查看失败的请求是什么。

在我看来,最可能的罪魁祸首是虚拟目录不同,或者浏览器的 URL 不同,导致相对路径解析不正确。在客户端上使用相对路径通常是一件非常糟糕的事情,因为客户端通常不知道相对于URL 是什么。

我建议只添加一些客户端代码,如下所示:

<script>
    var baseUrl = '@Url.Content("~/")';
</script>

这将声明一个包含应用程序“根”的 JavaScript 变量。然后,在页面的其他地方,您可以拥有使用基本 URL 并附加相对路径的其余部分的代码:

<script>
    $.ajax(...., baseUrl + "api/getdata", ...);
</script>
于 2013-02-28T17:14:04.013 回答