【问题标题】:reference asp.net core web application from .net core console application从 .net core 控制台应用程序引用 asp.net core web 应用程序
【发布时间】:2019-10-10 09:36:16
【问题描述】:

我有一个 ASP.NET 核心 3.0 Web 应用程序(用于设置 SignalR 服务器),我想从 .net 核心控制台应用程序开始。但是,每当我将 ASP.NET 应用程序的输出类型设置为“控制台应用程序”并从一个简单的测试 .net 核心应用程序中引用它时,我都会在构建时收到以下错误:

Error: Program does not contain a static 'Main' method suitable for an entry point.

它还抱怨找不到 Web 应用程序的 .dll 文件,但我猜这是因为其他构建错误。 每当我将 ASP.NET core 3.0 Web 应用程序输出类型设置为“类库”时,一切都构建得很好。只有当我尝试从控制台应用程序启动 Web 应用程序时,它才部分启动。我可以清楚地看到正在添加 SignalR 服务和端点,但是当我尝试将客户端连接到 SignalR 服务器时,这是不可能的。我错过了什么?为什么我不能从 .net core 控制台应用程序启动 asp.net core web 应用程序?

请注意:当我从 Web 应用程序本身的主要功能启动 Web 应用程序时(使用与控制台应用程序中相同的代码),一切正常。

【问题讨论】:

    标签: c# asp.net .net asp.net-core .net-core


    【解决方案1】:

    您不能简单地引用该项目。它不会任何事情,因为它需要实际运行。您需要发布和部署 ASP.NET Core 应用,然后从控制台应用通过 HTTP 访问它。

    【讨论】:

    • 我知道我需要在 ASP.NET 核心应用程序中初始化并调用“启动”函数。从一个单独的项目中执行此操作的目的是我们有一个主应用程序,它启动多个模块/插件/您想要调用它们的任何内容。 ASP.NET 核心应用程序只是这些模块之一。我目前有参考工作。主要问题是部署函数中的阻塞调用导致 ASP.net 核心应用程序无法以某种方式完成部署。出于某种原因,当我以独立方式启动应用程序时不会出现此问题。
    【解决方案2】:

    通常,您不应从控制台应用程序启动 Web 应用程序。您应该使用来自Host and deploy ASP.NET Core 的选项来部署它。

    出于测试目的,您可以按照以下步骤操作:

    1. 从 .net core 控制台应用程序引用 Asp.net Core Web 应用程序
    2. 将下面的代码添加到控制台应用程序中的Program.cs

      CoreAPI.Program.Main(args);
      
      namespace ConsoleApp1
      {
      class Program
      {
              static void Main(string[] args)
              {
                   Console.WriteLine("Start .net core");
                   CoreAPI.Program.Main(args);           
              }
      }    
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2019-12-29
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 2023-04-10
      相关资源
      最近更新 更多