C# 使用Azure发布管道部署后,Swagger文档不会更新

C# 使用Azure发布管道部署后,Swagger文档不会更新,c#,api,.net-core,swagger,documentation,C#,Api,.net Core,Swagger,Documentation,我正在使用Swashback和swagger来记录我的.NETCore(3.1)API项目 当我在VisualStudio201916.4.2中使用发布功能时,文档在swagger端点处得到了很好的更新 然而,在Azure中使用发布管道确实可以实现同样的效果 使用像这样的招摇发电机: services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInf

我正在使用Swashback和swagger来记录我的.NETCore(3.1)API项目

当我在VisualStudio201916.4.2中使用发布功能时,文档在swagger端点处得到了很好的更新

然而,在Azure中使用发布管道确实可以实现同样的效果

使用像这样的招摇发电机:

 services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "SqlViewService",
                    Version = "v1",
                    Description = "Alter views..."
                });
            });
app.UseSwagger().UseSwaggerUI(s =>
            {
                s.SwaggerEndpoint("/swagger/v1/swagger.json", "SqlViewService v1");
            });
我最初开始在startup.cs类中添加端点,如下所示:

 services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "SqlViewService",
                    Version = "v1",
                    Description = "Alter views..."
                });
            });
app.UseSwagger().UseSwaggerUI(s =>
            {
                s.SwaggerEndpoint("/swagger/v1/swagger.json", "SqlViewService v1");
            });
在搜索了一些文章和问题后,我尝试了以下方法:

app.UseSwagger().UseSwaggerUI(s =>
            {
                s.SwaggerEndpoint("/swagger/v1/swagger.json", "SqlViewService v1");
                s.RoutePrefix = string.Empty;
            });
还有,将当前目录添加到路径:

app.UseSwagger().UseSwaggerUI(s =>
            {
                s.SwaggerEndpoint("./swagger/v1/swagger.json", "SqlViewService v1");
            });
根据这篇文章:


这些尝试都没有奏效。有人有好的建议或实际的解决方案吗?

我必须在Configure方法的Startup.cs类中添加以下内容:

 s.RoutePrefix = "swagger";
在本节中:

 app.UseSwagger().UseSwaggerUI(s =>
        {
            s.SwaggerEndpoint("/swagger/v1/swagger.json", "SqlViewService v1");
            s.RoutePrefix = "swagger";
        });
解决突然开始出现的页面未找到的问题。 这使我无法看到我在发布管道中所做的更改在解决问题后是否有效

用于部署的文件夹的路径为:


由于要部署的文件的文件夹路径错误,我基本上是将其部署到旧应用程序文件中的文件夹中,因此IIS从未“接收”过该版本。

我刚刚检查了.net core 2.2应用程序。它显示了与Azure管道一起上载的服务的招摇过市定义。您是否真的有在本地工作但不为Azure应用程序服务的swagger?谢谢您的回复。正如我所说,文档可以在端点…/swagger上获得,包括本地和主机上。但在对用于输入API的模型进行更改,然后使用azure发布管道进行部署之后,它不会更新。也许我不清楚。看起来很奇怪。Swagger根据控制器方法定义动态生成
/Swagger
页面。所以,你可能已经缓存了azure应用程序服务/swagger网页。Azure应用程序服务上是否同时具有视觉表示法
/swagger
和json文件
swagger/v1/swagger.json
过时?是否尝试刷新页面(F5,Ctrl+F5)?刷新页面没有帮助。我对你提到的缓存感兴趣。你能详细说明一下吗?但是,我无法将这些点连接起来,因为事情是在Visual Studio发布中开箱即用,而不是在Azure Web App部署IIS任务中进行的。我指的是“缓存”的Web浏览器缓存。然而,页面刷新应该足以处理它。您确定Azure App Web deploy确实将修改后的REST服务部署到Azure Web App吗?部署日志中是否有任何错误?部署应用程序后,您是否看到了差异?我建议添加输出日期、时间和程序集版本的测试方法\控制器。使用此选项,您可以检查azure应用程序是否已实际更新。