繁体   English   中英

asp.net Web API核心项目启动类里面的SetCompatibilityVersion是什么

[英]What is SetCompatibilityVersion inside of the startup class of asp.net Web API core project

使用 Visual Studio 2017,我刚刚创建了一个简单的 API 项目,如下所示。 在 Startup.cs 文件中,我有这个代码。

public void ConfigureServices(IServiceCollection services) {

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

}

有人可以解释一下是什么意思吗? 我们需要保留这个代码吗?

我认为 MS 应该添加一些注释来说明此类代码的作用。

设置兼容性版本

当您调用AddMvc方法时,会使用某些选项注册多个组件。 你调用一个方法,整个 mvc 框架就连接起来了。

但是,如果未来 mvc 团队决定更改默认值,或者决定不再默认注册某个组件,或者更改此方法的预期副作用,则依赖于它的用户代码将中断。 为了避免这种破坏,您可以调用设置兼容性方法,mvc 团队将使用该方法来保留提供给您的行为。

假设他们引入了一个新功能,该功能仅在您面向 2.3 平台时才存在:如果您的代码声明它面向 2.2 api,mvc 团队将知道您没有使用该功能,因为当时它不存在。 这样就可以对应该提供什么以及如何提供做出安全的假设。

有关更多详细信息,请查看MSDN

Yennefer 的回答很棒,我将添加一些内容。

  • 对于 ASP.NET Core 2.X,由于 Yennefer 描述的原因,很可能需要使用SetCompatibilityVersion

  • 对于 ASP.NET Core 3.0,它是空操作,这意味着它什么都不做。 在这里阅读更多

  • 对于 ASP.NET Core 3.X(但不是 3.0)及更高版本,它可能具有值。 在这里阅读更多

仅供参考, SetCompatibilityVersion是 .Net Core 3 或更高版本的空操作,在 .Net 6 中已弃用。

https://docs.microsoft.com/en-us/aspnet/core/mvc/compatibility-version?view=aspnetcore-5.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM