Angularjs 在一个解决方案中将web API后端和角度前端作为两个项目进行调试

Angularjs 在一个解决方案中将web API后端和角度前端作为两个项目进行调试,angularjs,visual-studio,asp.net-mvc-4,routes,asp.net-web-api,Angularjs,Visual Studio,Asp.net Mvc 4,Routes,Asp.net Web Api,我在Visual Studio 2013中有一个包含MVC Web API和Angular应用程序的解决方案。 我设置了多个启动项目,以便调试时两个项目同时启动。 两者都可以启动,但它们运行在不同的端口上,因此前端无法从后端调用api 前端的请求如下所示: $http.get("api/MenuItems").then(function(response) { //do something here }); [RoutePrefix("api/MenuItems")] public c

我在Visual Studio 2013中有一个包含MVC Web API和Angular应用程序的解决方案。 我设置了多个启动项目,以便调试时两个项目同时启动。 两者都可以启动,但它们运行在不同的端口上,因此前端无法从后端调用api

前端的请求如下所示:

$http.get("api/MenuItems").then(function(response) {
    //do something here
});
[RoutePrefix("api/MenuItems")]
public class MenuController : ApiController
{
    public IHttpActionResult Get()
    {
        return Ok(MenuItem.GetItems());
    }
}
后端有如下控制器:

$http.get("api/MenuItems").then(function(response) {
    //do something here
});
[RoutePrefix("api/MenuItems")]
public class MenuController : ApiController
{
    public IHttpActionResult Get()
    {
        return Ok(MenuItem.GetItems());
    }
}
如何调试这个?我想在Web API的控制器中设置断点,并在fron倾向于触发请求时看到调试器停止,但这从未发生过。。。我错过什么了吗

这是受到教程的启发


tutoprial的源代码是

,因为它们在不同的端口上运行,所以必须指定完整的url。完整的url是http://主机:端口/地址

因此,如果您的后端服务器位于端口80上,您应该具有api调用

当url是相对的时,它将转到同一主机,因此如果前端位于端口40上,/api/menuItems指


然后,如果您正在调试web api,并且在控制器函数Get()的开始处放置了一个断点,那么您应该能够调试该请求。


基本上,如果您希望能够同时调试AngularJS和MVC服务器端代码(VisualStudio中的F5),则需要在IIS中配置网站。所以服务器端和客户端可以调用同一个域(不使用端口)。

那么为了调试目的,地址需要硬编码吗?没有办法绕过它吗?是的。如果您使用像grunt这样的构建系统,您可以将url设置为参数,以便build\u test使用localhost url,build使用相对url。从根本上讲,它无法发现自己的地址,除非它位于同一端口上。或者,您可以在代码中使用硬代码url进行测试的if语句。请接受答案,如果它工作。使用硬编码的服务器地址和端口工作。我只是觉得周围会有更聪明的方法。谢谢你的帮助!