没有为.NET Core Kestrel应用程序注册服务

问题描述:

我有一个控制台应用程序,我试图运行Kestrel。该代码文件是从空ASP.Core应用程序的所有样板文件:没有为.NET Core Kestrel应用程序注册服务

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
     } 

     app.Run(async (context) => 
     { 
      await context.Response.WriteAsync("Hello World!"); 
     }); 
    } 
} 

然而,当我运行它,我得到以下异常:

Unhandled Exception: System.InvalidOperationException: No service for type 'Microsoft.AspNetCore.Hosting.IStartup' has been registered. 

我凸出文件:

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
    <OutputType>Exe</OutputType> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup> 
    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" version="2.0" /> 
    </ItemGroup> 
</Project> 
+0

你是如何运行该应用程序的?我在VS 2017调试模式下测试了你的代码,以及使用'dotnet app.dll'并在两种情况下工作! –

+0

@JawadAlShaikh使用以前的CLI构建并运行。控制台应用程序也是用它创建的''dotnet new console'> – BanksySan

+0

我想解决依赖关系的问题,我会测试'new console'方法,同时你可以尝试VS 2017如果可行? –

正如评论中所述,我无法复制报告的问题:

我发现单个关于System.InvalidOperationException: No service for type 'Microsoft.AspNetCore.Hosting.IStartup' has been registered.你提到的,下面从Reference引用除外参考:

其抛出此异常 指出没有IStartup类ASP.NET核心配置系统。

我不是很熟悉你在这里做什么,但似乎 你正在做你的配置在一个不正确的顺序