ASP.NET Core出现CS0266无法将IHost转换为IHostBuilder报错如何解决
问题原因
你的CreateHostBuilder方法声明的返回值类型是IHostBuilder,但你在方法链式调用的末尾额外加了.Build()方法,.Build()执行后返回的是IHost类型,和方法声明的返回类型不匹配,所以触发了CS0266类型转换错误。
修复方案
直接去掉ConfigureWebHostDefaults配置块末尾的.Build()调用即可,修正后的代码如下:
using System; using System.Net; using System.Linq; using System.Threading.Tasks; using System.Collections.Generic; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; namespace gradesApp { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder .UseKestrel(options => { options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000 options.Listen(IPAddress.Loopback, 5001, listenOptions => { // https:localhost:5001 listenOptions.UseHttps("certificate.pfx"); }); options.Listen(IPAddress.Any, 80); // http:*:80 options.Listen(IPAddress.Any, 443, listenOptions => { // https:*:443 listenOptions.UseHttps("certificate.pfx"); }); }) .UseStartup<Startup>(); }); } }
补充HTTPS重定向配置建议
如果需要实现HTTP请求自动跳转到HTTPS,还需要补充对应中间件配置:
- 在
Startup类的ConfigureServices方法中注册重定向服务:
services.AddHttpsRedirection(options => { options.HttpsPort = 443; });
- 在
Startup类的Configure方法最开头(路由中间件之前)添加重定向中间件:
app.UseHttpsRedirection();
内容的提问来源于stack exchange,提问作者rawr51919
相关产品推荐
相关产品推荐

