我是使用 JetBrains Rider 的新手,我一直在我的 Mac 上使用 VSCode。我从 JetBrains Rider 看到了一个非常奇怪的行为。行为是,当我使用 Swagger 工具包托管 Web API 并使用 VSCode 运行该代码时,swagger 页面确实显示了在 HTTP 和 HTTPS 之间切换的选项。
但是,当我使用 JetBrains Rider 运行相同的代码时,我什至无法在 HTTP/HTTPS 之间进行选择。它默认使用 HTTPS 加载,差不多就是这样,在那之后我没有切换选项。
这真的很令人困惑,因为它是完全相同的代码,并且如果用户可以在 HTTP 或 HTTPS 模式下运行此 API,代码就是驱动力。但听起来 Rider 正在做或不做的事情会导致这种意外行为。
更多细节:
我们正在使用Swashbuckle.AspNetCore
工具包,负责设置 HTTP 协议的代码是
app.UseSwagger(c =>
{
c.RouteTemplate = "gms/swagger/{documentName}/swagger.json";
c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
{
swaggerDoc.Servers = new List<OpenApiServer>
{
new OpenApiServer { Url = $"https://{httpReq.Host.Value}" }
};
#if DEBUG
if (env.IsDevelopment())
{
// Enable http option for local dev environment
swaggerDoc.Servers.Add(new OpenApiServer { Url = $"http://{httpReq.Host.Value}" });
}
#endif
});
c.SerializeAsV2 = true;
});
是的,执行此代码时环境变量设置为开发。
我需要做些什么来改变这种行为吗?