c# - NSwag 中的条件运算处理器
问题描述
我尝试OperationProcessor
在 NSwag 中有条件地添加一个。例如,DefaultApiValueOperationProcessor
只有在我们处于开发环境中时才应该添加/启用 ( env.IsDevelopment
)
不幸的是,我无法检索IHostingEnvironment
,ConfigureServices
也无法打开 Swagger OperationProcessors
,Configure
请参阅注释行中的代码示例:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerDocument(s =>
{
// can't get IHostingEnvironment here? (for env.IsDevelopment())
s.OperationProcessors.Add(new DefaultApiValueOperationProcessor("version", "1"));
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// can't get Swagger's OperationProcessors here?
app.UseOpenApi();
app.UseSwaggerUi3(o =>
{
o.DocExpansion = "list";
o.DocumentTitle = "My API";
});
app.UseMvc();
}
}
知道如何解决这个问题吗?
解决方案
要从 访问 Web 主机环境ConfigureServices
,只需向类添加一个WebHostEnvironment
属性Startup
并从构造函数中设置它:
public class Startup
{
private IConfiguration Configuration { get; }
private IWebHostEnvironment WebHostEnvironment { get; }
public Startup(IConfiguration configuration, IWebHostEnvironment webHostEnvironment)
{
Configuration = configuration;
WebHostEnvironment = webHostEnvironment;
}
public void ConfigureServices(IServiceCollection services)
{
if (WebHostEnvironment.IsDevelopment())
{
// ...
}
}
}
我也把这个Configuration
属性放在这个例子中,因为很多程序都需要它。
请注意,类型是IWebHostEnvironment
而不是IWebHostingEnvironment
因为后者已被弃用。
关于您的第二个问题(如何从 访问操作处理器Configure
),您能否说明一下您的意图?我不知道你想要达到什么目的。
推荐阅读
- java - 如何并行调用多个Flowable语句?
- html - 当文件从另一个文件扩展时,不显示 .html 文件的内容
- c++ - 无法在 Ubuntu Conda 环境中编译 R 包:x86_64-conda-linux-gnu-c++:未找到
- python - 如何正确安装最新版本的 pygame?
- gekko - 使用 GEKKO 作为运动自行车模型不同控制算法的模拟器
- sql - SQL Server 子表按什么顺序删除?
- spring-boot - 防止在 JUnit 中执行 jpa @Query
- python - Discord.py raw_reaction_add 找不到成员
- python-3.x - 如何为 wx.html2.WebView 设置 socks5
- flutter - Flutter 的有状态小部件中未显示文本