如何将.NET Core 2.2 Web API迁移到.NET Core 3.0? [英] How do I migrate .NET Core 2.2 Web API to .NET Core 3.0?

查看:101
本文介绍了如何将.NET Core 2.2 Web API迁移到.NET Core 3.0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在关注 Microsoft的迁移指南,但失败了。因此,我改为使用.NET 2.2创建了一个新项目以建立干净的模板,然后尝试迁移到.NET Core 3.0。但是它再次失败了。在 Startup.cs 中,依赖项注入找不到方法 services.AddMvc()

I was following Microsoft's migration guide, but failed. So, instead, I created a new project with .NET 2.2 to establish a clean template, and then tried migrating to .NET Core 3.0. But it once again failed. In the Startup.cs, the dependency injection cannot find the method services.AddMvc().

似乎我的代码仍然引用.NET 2.2而不是.NET 3.0。

It seems my code still refers to .NET 2.2 instead of .NET 3.0.

如果我运行运行dotnet watch ,出现以下错误:

If I run dotnet watch run, I get the following error:


应用程序启动异常System.InvalidOperationException:
端点路由不支持 IApplicationBuilder.UseMvc(...)。
要使用 IApplicationBuilder.UseMvc,请在
的ConfigureServices(...)中设置
的 MvcOptions.EnableEndpointRouting = false。
处Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序,操作'1 configureRoutes)在
处Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序) netmig.Startup.Configure(IApplicationBuilder应用,
IHostingEnvironment env)在E:\testapp\netmig\Startup.cs:line 46 at
System.RuntimeMethodHandle.InvokeMethod(Object target,Object []
参数,签名sig,布尔值构造函数,布尔值wrapExceptions)
在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags
invokeAttr,Binder活页夹,Object []参数,CultureInfo文化) br> Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象
实例,IApplicationBuilder构建器)中的
Microsoft.AspNetCore.Hosting.ConfigureBuilder。<> c__DisplayClass4_0.b__0(IApplicationBuilder
$ b的$ b builder)Microsoft.AspNetCore.Hosting.GenericWebHostBuild er。<> c__DisplayClass13_0.b__2(IApplicationBuilder
应用),价格为
Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter。<> c__DisplayClass0_0.g__MiddlewareFilterBuilder | 0(IApplicationBuilder
生成器),价格为
Microsoft.AspNetCore.HostFilteringStartupFilter。<> c__DisplayClass0_0.b__0(IApplicationBuilder
应用)at
Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken
cancelleToken)未处理的异常。
System.InvalidOperationException:端点路由不支持
IApplicationBuilder.UseMvc(...)。要在
ConfigureServices(...)中使用 IApplicationBuilder.UseMvc
设置 MvcOptions.EnableEndpointRouting = false。
处Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序,操作'1 configureRoutes)在
处Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序) netmig.Startup.Configure(IApplicationBuilder应用,
IHostingEnvironment env)在E:\testapp\netmig\Startup.cs:line 46 at
System.RuntimeMethodHandle.InvokeMethod(Object target,Object []
参数,签名sig,布尔值构造函数,布尔值wrapExceptions)
在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags
invokeAttr,Binder活页夹,Object []参数,CultureInfo文化) br> Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象
实例,IApplicationBuilder构建器)中的
Microsoft.AspNetCore.Hosting.ConfigureBuilder。<> c__DisplayClass4_0.b__0(IApplicationBuilder
$ b的$ b builder)Microsoft.AspNetCore.Hosting.GenericWebHostBuild er。<> c__DisplayClass13_0.b__2(IApplicationBuilder
应用),价格为
Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter。<> c__DisplayClass0_0.g__MiddlewareFilterBuilder | 0(IApplicationBuilder
生成器),价格为
Microsoft.AspNetCore.HostFilteringStartupFilter。<> c__DisplayClass0_0.b__0(IApplicationBuilder
应用)在
Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken
cancelleToken)在
Microsoft Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost
主机,CancellationToken令牌)在
处的.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken
cancelleToken)在Microsoft。在
处的Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost
主机,CancellationToken令牌)在netmig.Program.Main(String []上的Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost
主机) args)
E:\ \testapp\netmig\Program.cs:line 18监视:退出,错误代码
-532462766

Application startup exception System.InvalidOperationException: Endpoint Routing does not support 'IApplicationBuilder.UseMvc(...)'. To use 'IApplicationBuilder.UseMvc' set 'MvcOptions.EnableEndpointRouting = false' inside 'ConfigureServices(...). at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app, Action'1 configureRoutes) at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app) at netmig.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env) in E:\testapp\netmig\Startup.cs:line 46 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.b__2(IApplicationBuilder app) at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder) at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app) at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) Unhandled exception. System.InvalidOperationException: Endpoint Routing does not support 'IApplicationBuilder.UseMvc(...)'. To use 'IApplicationBuilder.UseMvc' set 'MvcOptions.EnableEndpointRouting = false' inside 'ConfigureServices(...). at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app, Action'1 configureRoutes) at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app) at netmig.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env) in E:\testapp\netmig\Startup.cs:line 46 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.b__2(IApplicationBuilder app) at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder) at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app) at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host) at netmig.Program.Main(String[] args) in E:\testapp\netmig\Program.cs:line 18 watch : Exited with error code -532462766

我正在运行的完整代码可以在GitHub上找到。我的.NET信息:

The full code I am running can be found on GitHub. My .NET info:


dotnet --info .NET Core SDK(反映任何global.json):版本:

3.0.100提交:04339c3a26

dotnet --info .NET Core SDK (reflecting any global.json): Version:
3.0.100 Commit: 04339c3a26

运行时环境:操作系统名称:Windows操作系统版本:
10.0.18362操作系统平台:Windows RID:win10-x64 Base路径:C:\Program Files\dotnet\sdk\3.0.100\

Runtime Environment: OS Name: Windows OS Version: 10.0.18362 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\3.0.100\

主机(用于支持):版本:3.0.0提交: 7d57652f33

Host (useful for support): Version: 3.0.0 Commit: 7d57652f33

已安装.NET Core SDK:
2.2.401 [C:\Program Files\dotnet\sdk]
3.0.100 [C:\Program Files\dotnet\sdk]

.NET Core SDKs installed: 2.2.401 [C:\Program Files\dotnet\sdk] 3.0.100 [C:\Program Files\dotnet\sdk]

已安装.NET Core运行时:Microsoft.AspNetCore.All 2.2.6
[C: \程序文件\dotnet\共享\Microsoft.AspNetCore.All]

Microsoft.AspNetCore.App 2.2.6 [C:\程序
文件\dotnetb共享\Microsoft.AspNetCore.App]

Microsoft.AspNetCore.App 3.0.0 [C:\Program
文件\dotnet\共享\Microsoft.AspNetCore.App] Microsoft。 ñ ETCore.App
2.2.6 [C:\Program Files\dotnet\SharedMicrosoft.NETCore.App] Microsoft.NETCore.App 3.0.0 [C:\Program
文件共享网络Microsoft.NETCore.App]

Microsoft.WindowsDesktop.App 3.0.0 [C:共享程序
文件共享Microsoft。 WindowsDesktop.App]

.NET Core runtimes installed: Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

要安装其他.NET Core运行时或SDK:

https://aka.ms/dotnet-下载

To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download


推荐答案

对于v2.2

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    }

对于v3

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

还要确保您的csproj是目标.net core 3.0

Also make sure your csproj is target .net core 3.0

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

这篇关于如何将.NET Core 2.2 Web API迁移到.NET Core 3.0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆