我正在将一个ASP.NET Core 2.2 Web应用程序迁移到3.0版本,并对.AddMvc()有一个澄清问题。如果重要的话,我的应用程序使用Razor Pages和Views。
所以目前,在2.2代码中我有以下内容:
因此,我的问题是,我应该使用哪一个?
我的方法是做类似于:
所以目前,在2.2代码中我有以下内容:
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
迁移文档中说:“AddMvc继续像之前的版本一样运行。”但是,接下来它说以下代码“与2.2中的.AddMvc()相同”:
services.AddControllers();
services.AddRazorPages();
因此,我的问题是,我应该使用哪一个?
我的方法是做类似于:
services.AddControllersWithViews();
services.AddRazorPages()
.AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
})
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
这是正确的方式吗?
谢谢!
AddMvc()
实际上只是一个包装器,它包装了一堆其他注册服务的方法。这只是快速引导典型应用程序的一种方式。如果您想要排除某些内容或自定义如何注册内容,则可以使用单独的方法。请参见:https://github.com/aspnet/AspNetCore/blob/0303c9e90b5b48b309a78c2ec9911db1812e6bf3/src/Mvc/Mvc/src/MvcServiceCollectionExtensions.cs#L27 - Chris Pratt