Asp.net 如何在同一解决方案中从MVC项目调试Web API项目

Asp.net 如何在同一解决方案中从MVC项目调试Web API项目,asp.net,asp.net-mvc,visual-studio-2012,asp.net-web-api,Asp.net,Asp.net Mvc,Visual Studio 2012,Asp.net Web Api,在VS2012中,我试图创建一个MVC4 web应用程序,其中包含对web API项目的jQuery调用。(其他开发人员将使用我们当前的本地应用程序使用API,将来可能还会添加到API中。)因此,我有一个项目是Web API,另一个项目是MVC 4网站。我只能将其中一个设置为运行,并且它们使用localhost:xxxxx 如何调试对两者的更改?例如,假设我添加了一个新的API路径/API/customer/get,然后向该路径添加了一个新的jQuery ajax调用,并对生成的JSON进行处理

在VS2012中,我试图创建一个MVC4 web应用程序,其中包含对web API项目的jQuery调用。(其他开发人员将使用我们当前的本地应用程序使用API,将来可能还会添加到API中。)因此,我有一个项目是Web API,另一个项目是MVC 4网站。我只能将其中一个设置为运行,并且它们使用localhost:xxxxx

如何调试对两者的更改?例如,假设我添加了一个新的API路径/API/customer/get,然后向该路径添加了一个新的jQuery ajax调用,并对生成的JSON进行处理。我已经更改了这两个项目中的代码,并希望端到端地遵循它;如何启动两者?如何调试两者

需要明确的是,MVC应用程序并没有对API进行服务器端调用,我使用MVC主要是为了能够在.NET中轻松使用捆绑、缩小和(希望)预编译的把手模板;API调用来自jQuery。由于我对这些技术还比较陌生,欢迎提出其他建议


提前谢谢。

我也遇到了同样的问题,并从这里找到了解决方案:

解决方法是执行以下操作:

在解决方案文件中,单击“属性”转到“启动项目”节点(如果尚未选择该节点)

接下来选择多个启动项目。选择您的网站和Web服务,并在“操作”列中确保两者都选择了“开始”


现在,当您调试网站并在Web服务中设置断点时,它应该达到断点。

我遇到了同样的问题,并从这里找到了解决方案:

解决方法是执行以下操作:

在解决方案文件中,单击“属性”转到“启动项目”节点(如果尚未选择该节点)

接下来选择多个启动项目。选择您的网站和Web服务,并在“操作”列中确保两者都选择了“开始”


现在,当您调试网站并在web服务中设置断点时,它应该达到断点。

我的web api项目也遇到了类似的问题。我的解决方案包括一个有角度的前端,后端有两个WebAPI项目。一个WebAPI项目处理“授权”,另一个处理“资源”。我使用Taiseer Joudeh的以下教程作为起点:


断点在“授权服务器”上工作。。。但不是在“资源服务器”上。我比较了两个项目的包,看看有什么不同。一旦我将“Microsoft.AspNet.WebApi.Cors”添加到“资源服务器”项目中,断点就开始工作了

我的web api项目也有类似的问题。我的解决方案包括一个有角度的前端,后端有两个WebAPI项目。一个WebAPI项目处理“授权”,另一个处理“资源”。我使用Taiseer Joudeh的以下教程作为起点:


断点在“授权服务器”上工作。。。但不是在“资源服务器”上。我比较了两个项目的包,看看有什么不同。一旦我将“Microsoft.AspNet.WebApi.Cors”添加到“资源服务器”项目中,断点就开始工作了

聚会迟到了,但如果其他人正在寻找解决方案,这对我来说是最好的:将Api项目设置为启动项目(我需要限制为一次启动,以便我可以更轻松地在浏览器之间切换)。启动服务项目后,右键单击web/ui项目并选择调试,启动新实例。这两种方法都可以运行,并且可以无缝地从web过渡到api

聚会迟到了,但如果其他人正在寻找解决方案,这对我来说是最好的:将Api项目设置为启动项目(我需要限制为一次启动,以便我可以更轻松地在浏览器之间切换)。启动服务项目后,右键单击web/ui项目并选择调试,启动新实例。这两种方法都可以运行,并且可以无缝地从web过渡到api

您可以在解决方案资源管理器中右键单击解决方案并选择“设置启动项目…”,然后选择“多个启动项目”,调试时,您可以在所有具有“启动”操作的项目中点击断点。@TDL:这很有效,谢谢。但它暴露了另一个问题,即每个项目都附加到不同的本地主机端口号,实际上使它们成为不同的网站(和域?)。计划部署到同一站点,但API路由都以“/API/”开头。目前,如何在调试时使jQuery调用引用正确的域?我当然不想在调试模式下替换URL,这样看来我会遇到跨域访问问题。这有意义吗?如果你想把它们都放在同一个网站下,为什么不把两个项目合并成一个呢?@Jammerms-听起来你是在把URL硬编码到代码中,这不是一个好主意。类似的东西应该在web.config中。您可以使用基于部署目标环境的转换来覆盖它们。@LordHits:我认为我们最终会将它们结合起来,以使事情变得更简单,但我们希望尽可能将关注点分离,并使API能够独立于网站开发和部署。您可以右键单击解决方案浏览器中的解决方案,选择“设置启动项目…”,然后选择“多个启动项目”,然后在调试时,您可以在所有具有“开始”操作的项目中点击断点。@TDL:这很有效,谢谢。但它暴露了另一个问题,即每个项目都附加到不同的本地主机端口号,实际上使它们成为不同的网站(和域?)。计划部署到同一站点,但API路由都以“/API/”开头。目前,如何在调试时使jQuery调用引用正确的域?我当然不想重播