我正在关注微软的迁移指南,但失败了。因此,我使用 .NET 2.2 创建了一个新项目来建立一个干净的模板,然后尝试迁移到 .NET Core 3.0。但它再次失败了。在里面Startup.cs
,依赖注入找不到方法services.AddMvc()
.
看来我的代码仍然引用 .NET 2.2 而不是 .NET 3.0。
如果我跑dotnet watch run
,我收到以下错误:
应用程序启动异常System.InvalidOperationException:
端点路由不支持“IApplicationBuilder.UseMvc(...)”。
使用“IApplicationBuilder.UseMvc”设置
'MvcOptions.EnableEndpointRouting = false' 内
'配置服务(...)。在
Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序,操作'1配置路由)位于
Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序)在 netmig.Startup.Configure(IApplicationBuilder 应用程序,
IHostingEnvironment env) 在 E:\testapp\netmig\Startup.cs:第 46 行
System.RuntimeMethodHandle.InvokeMethod(对象目标,对象[]
参数、签名 sig、布尔构造函数、布尔包装异常)
在 System.Reflection.RuntimeMethodInfo.Invoke(对象 obj,BindingFlags
invokeAttr、Binder 绑定器、Object[] 参数、CultureInfo 文化)
在 Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象
实例,IApplicationBuilder 构建器)位于
Microsoft.AspNetCore.Hosting.ConfigureBuilder.c__DisplayClass4_0.b__0(IApplicationBuilder
建设者)在
Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.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
cancelToken) 未处理的异常。
System.InvalidOperationException:端点路由不支持
'IApplicationBuilder.UseMvc(...)'。使用“IApplicationBuilder.UseMvc”
在里面设置 'MvcOptions.EnableEndpointRouting = false'
'配置服务(...)。在
Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序,操作'1配置路由)位于
Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder
应用程序)在 netmig.Startup.Configure(IApplicationBuilder 应用程序,
IHostingEnvironment env) 在 E:\testapp\netmig\Startup.cs:第 46 行
System.RuntimeMethodHandle.InvokeMethod(对象目标,对象[]
参数、签名 sig、布尔构造函数、布尔包装异常)
在 System.Reflection.RuntimeMethodInfo.Invoke(对象 obj,BindingFlags
invokeAttr、Binder 绑定器、Object[] 参数、CultureInfo 文化)
在 Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(对象
实例,IApplicationBuilder 构建器)位于
Microsoft.AspNetCore.Hosting.ConfigureBuilder.c__DisplayClass4_0.b__0(IApplicationBuilder
建设者)在
Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.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
取消令牌)位于
Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken
取消令牌)位于
Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost
主机、CancellationToken 令牌)位于
Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost
主机、CancellationToken 令牌)位于
Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost
主机)在 netmig.Program.Main(String[] args) 中
E:\testapp\netmig\Program.cs:line 18 watch : 退出并显示错误代码
-532462766
我正在运行的完整代码可以在 GitHub 上找到。我的 .NET 信息:
dotnet --info .NET Core SDK(反映任何 global.json):版本:
3.0.100 提交:04339c3a26
运行环境: 操作系统名称: Windows 操作系统版本:
10.0.18362 操作系统平台:Windows RID:win10-x64 基本路径:C:\Program Files\dotnet\sdk\3.0.100\
主机(对支持有用):版本:3.0.0 提交:7d57652f33
安装的.NET Core SDK:
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:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.6 [C:\Program
文件\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [C:\Program
文件\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
文件\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0 [C:\Program
文件\dotnet\shared\Microsoft.WindowsDesktop.App]
要安装其他 .NET Core 运行时或 SDK:
https://aka.ms/dotnet-download
For 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
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)