【问题标题】:Issue with .ConfigureKestrel() method in .net Core.net Core 中的 .ConfigureKestrel() 方法存在问题
【发布时间】:2019-07-10 09:05:56
【问题描述】:

我正在尝试使用 .net Core 创建一个非常简单的 API,并且正在探索 Kestrel。我正在按照本 MS 教程中的说明进行操作:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2

但是,当我尝试调用 ConfigureKestrel 方法时,Visual Studio 告诉我“IWebHostBuilder 不包含‘ConfigureKestrel()’的定义,并且没有可访问的 ConfigureKestrel 扩展方法接受‘IWebHostBuilder’类型的第一个参数可以被发现(您是否缺少 using 指令或程序集引用?)"

我找不到这方面的任何信息,而且我很确定我使用的是正确的库。任何帮助将不胜感激 - 包括代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace WebApplication2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();

        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .ConfigureKestrel((context, options) =>
        {
            // Error with ConfigureKestrel method above
        });
    }
}

【问题讨论】:

  • 这很确定是您不导入的命名空间中的扩展方法。
  • 可能是 Microsoft.AspNetCore.Hosting 或 Microsoft.AspNetCore.Server.Kestrel
  • 即使同时使用这两个命名空间,它似乎仍然无法解决错误。

标签: c# asp.net kestrel


【解决方案1】:

我从头开始创建了一个示例应用程序,它可以编译:

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace WebApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureKestrel((a, b) => { });
    }
}

你能检查一下这个例子是否适合你吗?

还请检查您是否拥有最新版本的 .Net Core,也许它已更改?文档是 2.2

【讨论】:

  • 我的问题是我运行的是 2.1 - 感谢您的回答!
【解决方案2】:

发现 VS2017 ASP.NET Core Web 应用程序 -> 运行 2.1 的 API 没有 ConfigureKestrel。但是,您可以将 KestrelServerOptions 操作传递给 UseKestrel,这可以让您在之后进行控制。它会覆盖 CreateDefaultBuilder 中的设置。

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>().UseKestrel(options => options.Listen(IPAddress.Loopback,60000));

顺便说一句,我刚刚发现如果你从一个普通的 .NetCore 控制台应用程序开始,然后添加...

    Microsoft.AspNetCore
    Microsoft.AspNetCore.Mvc

这为您提供了一个运行 AspNetCore 2.2 而不是 2.1 的(相当简约的)项目

【讨论】:

  • 我现在有点好奇...如果您将 KestrelServerOptions Action 与 2.2 一起使用,它会赢还是 ConfigureKestrel 方法中的值会赢?
猜你喜欢
  • 1970-01-01
  • 2021-04-14
  • 2017-04-05
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
相关资源
最近更新 更多