在一个解决方案中将Web API后端和角度前端调试为两个项目

时间:2015-05-20 15:20:58

标签: 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 class MenuController : ApiController
{
    public IHttpActionResult Get()
    {
        return Ok(MenuItem.GetItems());
    }
}

我该如何调试?我想在Web API的控制器中设置断点,并在fron-tend启动请求时看到调试器停止,但这种情况从未发生过......我错过了什么?

这受到教程AngularJS Token Authentication using ASP.NET Web API 2, Owin, and Identity

的启发

tutoprial的源代码是tjoudeh/AngularJSAuthentication

2 个答案:

答案 0 :(得分:1)

因为它们在不同的端口上运行,所以您必须指定完整的URL。完整网址是http(s):// host:port / address

因此,如果您的后端服务器位于端口80上,则应该进行api调用 http://localhost:80/api/menuItems

当url是相对的时,它将转到同一主机,所以如果你的前端在端口40上,/ api / menuItems指的是 http://localhost:40/api/menuItems

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

答案 1 :(得分:0)

有一篇类似的文章。 https://weblog.west-wind.com/posts/2011/Dec/15/Debugging-ApplicationStart-and-Module-Initialization-with-IIS-and-Visual-Studio

基本上,如果您希望能够同时调试AngularJS和MVC服务器端代码(Visual Studio中的F5),则需要在IIS中配置网站。因此,服务器端和客户端可以调用相同的域(而不是端口)。