如何使用.NET通用主机将REST API添加到用.NET Framework 4.8编写的控制台应用程序中?

问题描述 投票:0回答:1

我编写了一个小型Windows服务,该服务使用.NET通用主机托管许多基于IHostedService的类。我想添加通过REST API与服务进行通信的功能,并认为.NET通用主机设置应该可以让我轻松地做到这一点:只需添加Microsoft.AspNetCore,Microsoft.AspNetCore.Hosting并从添加一个.ConfigureWebHost到IHostBuilder。但是,似乎.NET Framework和.NET通用主机的结合禁止了它的工作。...program.cs大致类似于:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace Myservice
{
  class Program
  {
    static async Task Main(string[] args)
    {
      IHostBuilder builder = Host.CreateDefaultBuilder(args)
        .ConfigureHostConfiguration(...)
        .ConfigureAppConfiguration(...)
        // ConfigureWebHost can't be found by the compiler
        // Neither can .ConfigureWebHostDefaults
        .ConfigureWebHost(...)
        .ConfigureLogging(...)
        .ConfigureServices(...);

      if (CommandLine.RunAsService)
      {
        builder.UseWindowsService();
      }

      await builder.Build().RunAsync();
    }
  }
}

我已经看到了一些提示,说明特定的项目类型很重要。我从一个标准的.NET Framework Console应用程序开始-因此项目文件看起来像:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
...

但也尝试过使用.NET Framework从ASP.NET Core Web应用程序模板构建的项目。 (.NET Framework是使用服务所需的特定程序集的要求。)如下所示:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net48</TargetFramework>
  </PropertyGroup>
  ...

似乎这应该可以以某种方式起作用,但是我找不到正确的组合...。

c# asp.net
1个回答
0
投票

内部看来,.NET通用主机已被带到.NET Framework中,但是其中包含Web主机的部分在AspNetCore中,特别是在版本3中,并且尚未得到支持。 NET框架。因此,尽管这会很好,但是直到.NET 5才有可能。

© www.soinside.com 2019 - 2024. All rights reserved.