- 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/
我有一个 Asp.Net core 2.2 项目。 最近,我将版本从 .net core 2.2 更改为 .net core 3.0 Preview 8。此更改后我看到此警告消息: using 'Us
我正在尝试新的 asp.net 5 和 VSNET 2015 RC。 我的网络应用程序的配置:Microsoft.AspNet.Mvc 6.0.0-beta4 我对这种行为感到很困惑:如果我使用 p
我想弄清楚如何正确替换 app.UseMvc()曾经是 .net core 2.2 一部分的代码。这些示例甚至告诉我我可以调用的所有代码是什么,但我还不明白我应该调用哪个。例如,对于我的 MVC We
当我使用 Swagger 为我的 API 提供动力时,我遵循了 those guids 之一而且我总是像这样将 MVC 注入(inject)放在 Swagger 注入(inject)之前。 servi
我希望将不同端口(在我的例子中是 80 和 443)上的请求路由到不同的 Controller 。 我在 this answer 中看到了建议的技术,但代码在 .NET 6 下已过时。Blazor/A
将我的 API 从 .net core 2.2 迁移到 3.1 后,我面临一些问题来决定我应该遵循哪种最佳方法来为我的 API 注册 OData 扩展方法。目前,我有这段代码 public void
我为 Web API 创建了一个 ASP.NET 5 应用程序,并从 NuGet 安装了 Asp.Net.Diagnostics,这样我就可以添加自己的错误处理。 什么有效:(来自 Startup.c
当使用 .NET core Web API 的脚手架时,它包括: services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Vers
在 VS Code 中构建 .net core mvc 应用程序并收到错误 IApplicationBuilder does not contain a definition for UseMvc。这
我是一名优秀的程序员,十分优秀!