簡體   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