在Visual Studio

时间:2017-09-01 14:45:26

标签: visual-studio iis asp.net-web-api asp.net-core visual-studio-debugging

设置

我们有一个VS 2017解决方案,包含2个ASPNET Core 2.0项目:

项目1:WebUi - 基于Vue的UI项目,包含应用程序前端的Typescript

项目2:WebApi - 包含所有api实现的WebAPI项目

IIS下的高效部署如下所示:

enter image description here

Web物理路径指向空文件夹。 WebApi指向发布WebApi VS项目的文件夹。 WebUi指向发布WebUi VS项目的文件夹。这很好用:WebApi可以在/ webapi下访问,WebUi可以在/ webui下访问。此设置还意味着我们不需要处理CORS请求,因为两个项目都在同一个域下运行。

我们正在努力实现的目标

现在我们正在尝试在VS 2017中定义一个设置,以便同时轻松调试这两个项目。到目前为止我们得到的是以调试模式发布项目,然后附加到托管可执行文件。这很好用。问题是,对于代码中的每个更改,需要另一个发布以调试新代码。这需要太多时间。

更好的是在VS中点击F5,这将在调试模式下启动同一主机(如IIS设置)下的两个应用程序,并能够同时调试这两个项目。一次一个项目有效,但不是两个。

我们已尝试将调试属性中的两个项目的AppUrl设置为相同的URL但具有不同的路径:

Project WebUi:

enter image description here

Project WebApi:

enter image description here

但不幸的是,这不起作用。

我们如何设置我们的项目,以便有一个简单的解决方案来同时调试这两个项目?

2 个答案:

答案 0 :(得分:0)

我不相信这是可能的。根据我的经验,您只能将调试器附加到解决方案下的单个项目中。我个人会合并这两个项目,API部分在API区域。另一种方法是将两个项目移动到他们自己的解决方案中,然后你必须打开2个visual studio实例来运行该站点。

在Ui项目中设置Api区域 Startup.cs,配置方法

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "areaRoute",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

创建文件夹结构区域> Api>控制器。然后将所有API控制器放在该文件夹中。然后将区域和路径属性添加到所有Api控制器

[Area("WebApi")]
[Route("[area]/[Controller]")]

通过这个设置,Ui项目将驻留在/并且api将驻留在/ WebApi中。整个解决方案将有一个项目,一个IIS站点,VS将能够同时调试所有内容。如果您希望Ui驻留在/ WebUi上,请更新主路由图或在区域中创建另一个文件夹。

答案 1 :(得分:0)

如果要调试部署项目,我认为唯一的选择是将调试器从VS连接两次到每个应用程序。

我们通常通过在IIS下运行项目来开发项目,方法是更改​​项目属性 - > Web-> Servers-> Local IIS->为两个项目创建虚拟目录,然后在调试时在IIS下运行。

要运行这两个项目,您可以按照解决方案属性 - >启动项目 - >多个启动项目 - >为他们设置开始操作 - > F5,VS将运行两个项目。

因此,您可以按照上述步骤重新发布项目,然后您就可以调试这两个项目,或者,您只能用于开发和测试,如果没有问题,您可以发布它们。