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