Я развертываю свое основное приложение .net на сервере IIS и сталкиваюсь с проблемой в пользовательском интерфейсе swagger, где swagger.json не найден.Когда я запускаю его локально (среда разработки), все работает отлично, но при развертывании его на сервере IIS не удается найти файл swagger.json.
Ранее я сталкивался с этой проблемой в приложении .net core 2.1, и яразрешил его, написав приведенный ниже код, чтобы получить виртуальный базовый путь.
string basePath = Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH");
basePath = basePath == null ? "/" : (basePath.EndsWith("/") ? basePath : $"{basePath}/");
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{basePath}swagger/v1/swagger.json", "Test.Web.Api");
c.RoutePrefix = "";
});
Я попытался использовать приведенный ниже код, чтобы разрешить его:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{env.ContentRootPath}swagger/v1/swagger.json", "Test.Web.Api");
//OR
c.SwaggerEndpoint($"{env.WebRootPath}swagger/v1/swagger.json", "Test.Web.Api");
c.RoutePrefix = "";
});
}
Но предыдущий код не сработал, когда он возвращаетсяфактический физический путь, а не виртуальный путь.
Кто-нибудь знает, как получить виртуальный путь в .net core 2.2, так как Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH");
не работает.Любое руководство будет полезно.