Web.API部署URL不起作用?

时间:2013-02-28 16:48:40

标签: asp.net-web-api iis-7.5 web-deployment

在我的Web.API项目中,为了在Web设置中进行开发,我在本地IIS Web服务器上使用http://localhost/reporter的“Project Url:”。有一些页面是使用asp.net mvc4从这个站点提供的,其中javascript调用发布到像'api / getdata /'这样的网址。

出于某种原因,这些已经停止工作 - 例如,我将jQuery帖子发送到'api / getdata',完整的URL是http://localhost/reporter/api/getdata这是正确的。生活很美好。

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

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

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

1 个答案:

答案 0 :(得分:1)

首先,我建议使用Fiddler等工具或网络浏览器的开发工具进行网络跟踪,看看失败的请求是什么。

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

我建议只添加一些客户端代码:

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

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

<script>
    $.ajax(...., baseUrl + "api/getdata", ...);
</script>