写在前面
微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总:
开始迁移
1. 修改*.csproj项目文件
<TargetFramework>netcoreapp2.2</TargetFramework> 修改为 <TargetFramework>netcoreapp3.1</TargetFramework>
2 修改Program
public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>().ConfigureAppConfiguration((hostingContext, config) => { <span style="color:transparent">本文来源gaodai#ma#com搞*!代#%^码$网!</span> config.AddJsonFile($"你的json文件.json", optional: true, reloadOnChange: true); } );
修改为
public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>() .ConfigureAppConfiguration((hostingContext, config)=> { config.AddJsonFile($"你的json文件.json", optional: true, reloadOnChange: true); }); });
3.1 修改Startup.ConfigureServices
services.AddMvc(); 修改为 services.AddControllers();
3.2 修改Startup.Configure
public void Configure(IApplicationBuilder app, IHostingEnvironment env) 修改为 using Microsoft.Extensions.Hosting; public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
IHostingEnvironment在3.0之后已被标记弃用。
路由配置:
app.UseMvc(routes => { routes.MapRoute( name: "areas", template: "{area:exists}/{controller=Home}/{action=Index}/{id?}" ); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}" ); }); 修改为 app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapControllerRoute( name: "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
你以为结束了?还没。
坑
这时候你以为结束了,兴高采烈的去服务器装好runningTime和hosting相应的版本,运行……
HTTP Error 500.30 ? ANCM In-Process Start Failure
直接cmd,进入到发布目录,执行:
E:\你的路径>dotnet xxx.dll
显示详细错误