- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我使用 Swagger 为我的 API 提供动力时,我遵循了 those guids 之一而且我总是像这样将 MVC 注入(inject)放在 Swagger 注入(inject)之前。
services.AddMvc();
services.AddSwaggerGen(_ => { ... });
app.UseMvc();
app.UseSwagger();
app.UseSwaggerUI(c => { ... });
我的一个 friend 问我为什么应用那个顺序而不是在 MVC 之前先处理 Swagger 相关行。我发现我无法向他解释,也无法激励他(除了非常尴尬的好吧......事情就是这样......)。这告诉我,我应该深入研究一下这个问题。
据我所知,简短的谷歌搜索没有发现任何相关内容,所以我在这里提问。
最佳答案
在这种特殊情况下,Add*
不受它们添加到服务集合的顺序的影响。
但是,取决于特定的执行Add*
扩展名,顺序可能会影响配置。例如,如果它在内部使用 TryAdd*
分机,则只有第一个调用登记。后续调用不会添加,因为注册已经存在。
将军AddScoped/AddSingleton/AddTransient
calls 识别类型的最后一次调用,因为它会覆盖该类型的先前注册调用。为一个类型注册多个实现时,通过 IEnumerable<T>
解析那么集合中的实现将按照它们注册的顺序排列。
引用 Dependency injection in ASP.NET Core
对于 Use*
中间件它们添加到管道的顺序很重要,因为它们以相同的顺序被调用。
Order
The order that middleware components are added in the
Startup.Configure
method defines the order in which the middleware components are invoked on requests and the reverse order for the response. The order is critical for security, performance, and functionality.
根据我的经验,根据他们的设计目的,一些需要访问管道的第 3 方集成(包括 swagger)建议在 AddMvc
之后添加他们的扩展。尽量避免路由冲突。
大多数安全(身份验证/授权)和日志记录中间件通常建议在管道的早期添加,因此它们往往出现在 AddMvc
之前。 .
关于c# - AddMvc/AddSwaggerGen 和 UseMvc/UseSwagger(UI) 之间的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53925413/
当我尝试在 visual studio 2015 中构建项目时,我在 ConfigureServices 方法中遇到了问题。 最佳答案 检查您尝试使用的 asp.net-mvc 版本。看起来您正在混合
我试图找出为什么在所有文档中我看到 services.AddMvc或 services.AddMvcCore在 Startup.cs 但是在由 VS 创建的 ASP.NET Core MVC 3.1
为了能够在我的 ASP.NET Core 应用程序中添加 Controller ,我可以添加 services.AddControllersWithViews() 要么 services.AddMvc
自 2018 年 5 月 30 日起,我在 Startup.cs 中的 ASP.NET Core 代码 public IServiceProvider ConfigureServices(IServi
我正在学习 ASP.NET Core,我看到注册 MVC 服务如下所示: public void ConfigureServices(IServiceCollection services) {
当我使用 Swagger 为我的 API 提供动力时,我遵循了 those guids 之一而且我总是像这样将 MVC 注入(inject)放在 Swagger 注入(inject)之前。 servi
我正在将 ASP.NET Core 2.2 Web 应用程序迁移到 3.0,并且有关于 .AddMvc() 的澄清问题。如果这很重要,我的应用程序使用 Razor 页面和 View 。 所以目前,我在
我使用以下命令创建了 .net core 2.0 mvc 应用程序:“dotnet new mvc”,它运行没有任何问题,但在 vscode 中我有两个错误: 'IServiceCollection'
我创建了一个全新的 asp.net 核心应用程序。我已经添加了 mvc Nuget 包,但出现以下错误。 微软.AspNetCore.Mvc.Core 1.1.3 'IServiceCollectio
我正在为 Asp.Net Core 创建一个 Nuget 包。我想让配置变得简单。因此,我决定提供一种流畅的方法,将我的 Nuget 添加到 Asp.Net Core 中 ConfigureServi
我正在学习本教程:http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6设置一个 web api,但我还没
我正在看书学习ASP.NET Core MVC,问题代码片段如下: // CHAPTER 4 - ESSENTIAL C# FEATURES namespace LanguageFeatures {
当使用 .NET core Web API 的脚手架时,它包括: services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Vers
我不太喜欢使用预捆绑的 AddMvc(),而是更喜欢使用 AddMvcCore()。 话虽如此,我想知道如何将新的(从 2.0 开始)AddRazorPages() 与 AddMvcCore() 一起
为什么在 mvc6 应用程序的 Configuration 方法中只添加 app.UseMvc() 是不够的?为什么还需要在 ConfigureServices 方法中添加 services.AddM
我是一名优秀的程序员,十分优秀!