Asp.net 如何使用多个项目部署单个解决方案?

Asp.net 如何使用多个项目部署单个解决方案?,asp.net,angularjs,iis,asp.net-web-api,Asp.net,Angularjs,Iis,Asp.net Web Api,我使用WebAPI和AngularJS开发了一个解耦良好的网站,如下所示: SOLUTION |—— WEB.API Project |—— Website pages Project '—— Other projects related to functionalities 此设置在我自己的计算机上 现在我想在这里部署到我的web服务器(IIS7.5,私有,安装了WebDeploy)。是否可以在单个网站上部署这两个项目?(其他项目都是类库,所以没有麻烦) 据我所知,我必须将W

我使用WebAPI和AngularJS开发了一个解耦良好的网站,如下所示:

SOLUTION
  |—— WEB.API Project  
  |—— Website pages Project
  '—— Other projects related to functionalities
此设置在我自己的计算机上

现在我想在这里部署到我的web服务器(IIS7.5,私有,安装了WebDeploy)。是否可以在单个网站上部署这两个项目?(其他项目都是类库,所以没有麻烦)


据我所知,我必须将WebAPI部分部署到一个网站,将UI部分部署到另一个网站。我可以将它们放在一个网站上吗?

您可以将Web API项目放在主网站下的虚拟目录中。这就是我们在当前项目中实际正在做的事情。

您可以,但当文件冲突时,您应该担心。例如,如果两个项目都有一个
web.config
,这可能会破坏它们中的任何一个


如果不是的话,这应该是可能的,但我不会马上推荐。我会将它们分割到单独的虚拟目录中,以便您可以轻松地维护这两个单独的项目。

我有一个几乎相同的项目设置。就我个人而言,我选择了两个独立的应用,我有一个多服务器的负载平衡器设置-如果我有一个单一的服务器或预期流量低,选择可能会有所不同

这提供了优势: 我希望我的WebAPI比网页拥有更多的流量,因为移动客户端也使用WebAPI和前端网页。因为API在自己的网站上,所以它有自己的应用程序池——这意味着每个应用程序都有自己的资源池(应用程序可以增长以更好地使用更多内存和CPU),而不是像在虚拟目录上那样共享

缺点: 因为有两个独立的应用程序池,所以我将一个绑定到端口80,另一个绑定到端口8080。由于我有一个大型的服务器场来部署它,我在Web服务器前面已经有了一个负载平衡器-因此为了使URL美观(即从URL中删除端口8080),我添加了一个负载平衡器配置,以允许流量进入端口80上的给定URL,并重定向到内部Web服务器上的端口8080。如果您不介意URL中的端口,这其实不是一个问题。

您也可以使用自行托管Web API,这样您就不需要在IIS等中设置项目,然后您就可以让多个客户端与同一API通信


有一个更高级的教程。

您不是也在IIS上本地运行应用程序吗?这将使部署变得更加简单,因为整个场景在开发环境和生产环境之间非常相似。为什么需要拆分它们?Web API会被其他客户端使用吗?正如@christiandev所说,我需要在其他场景中使用json,比如移动。虚拟目录共享相同的应用程序池。我想对web api使用应用程序池,而对某些html页面不使用应用程序池或其他扩展,从而使其成为应用程序。右键单击IIS中的文件夹并选择“转换为应用程序”。为什么不选择两个单独的dns条目?您(当然还有我)可能有类似rest.example.com的web.api项目和www.example.com的frontendHi@Valerio是的,这正是我所拥有的,但如果没有负载平衡器配置,您仍然会在dns条目的url中留下端口号。正如我所说的,如果你不介意的话,这不是一个问题,但我总是认为这有点混乱,因此我添加了load balancer config.ok,我接受这个答案,因为使用这种方式,我可以在IIS之外托管这两个项目。对于一个简单的基于html的网站,我不需要它带来的所有膨胀,自我托管Web.Api将是性能的杀手。这很有帮助,但我们采取了不同的方式。