【问题标题】:Debugging multiple ASPNET Core applications simultaneously in Visual Studio在 Visual Studio 中同时调试多个 ASPNET Core 应用程序
【发布时间】:2018-02-10 16:02:35
【问题描述】:

设置

我们有一个带有 2 个 ASPNET Core 2.0 项目的 VS 2017 解决方案:

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

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

IIS 下的生产部署如下所示:

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

我们正在努力实现的目标

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

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

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

WebUi 项目:

WebApi 项目:

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

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

【问题讨论】:

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


    【解决方案1】:

    我不相信这是可能的。根据我的经验,您只能将调试器附加到解决方案下的单个项目。就我个人而言,我会将这两个项目合并,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?}");
            });
    

    创建文件夹结构Areas > Api > Controller。然后将所有 API 控制器放入该文件夹中。然后给所有的 Api 控制器添加 Area 和 Route 属性

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

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

    【讨论】:

    • 这是可能的,它现在也适用于我们,但前提是我们发布两个项目,然后手动附加到运行这两个应用程序的 进程。唯一的问题是,目前这是一个耗时且繁琐的过程,我们希望简化它。
    • 所以您是从 IIS 而非 Visual Studio 进行调试的,对吗?
    • 应用托管在 IIS 中。我将调试器从 VS 附加到每个应用程序两次。
    • 我更新了关于如何创建区域的答案。我不相信您无需手动附加调试器就能够实现您想要做的事情。
    【解决方案2】:

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

    我们通常通过在IIS下运行项目,通过更改项目属性->Web->服务器->本地IIS->为这两个项目创建虚拟目录来开发项目,然后在调试时它将在IIS下运行。

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

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

    【讨论】:

    • @Copil tembel,这个问题呢?你能得到任何有用的信息吗?
    猜你喜欢
    • 1970-01-01
    • 2018-05-21
    • 2020-11-29
    • 2020-08-27
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多