Swagger is not Working Asp.net核心如何打开swagger ui

yduiuuwa  于 2023-05-06  发布在  .NET
关注(0)|答案(3)|浏览(136)

这是我的Startup.cs文件
这是Startup.cs中的ConfigureService方法。我已经完全按照文档修改了它,但它不起作用。我已经删除了启动URL,所以它只是在端口上运行,我没有设置任何路由。

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddControllers();
            services.ConnectionToACQEs(Configuration);
            services.AddAutoMapper(typeof(Startup));
            // Register the Swagger generator, defining 1 or more Swagger documents
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version = "v1",
                    Title = "ToDo API",
                    Description = "A simple example ASP.NET Core Web API",
                    TermsOfService = new Uri("https://example.com/terms"),
                    Contact = new OpenApiContact
                    {
                        Name = "Nicky Liu",
                        Email = "nicky@zedotech.com",
                        Url = new Uri("https://www.zedotech.com"),
                    },
                    License = new OpenApiLicense
                    {
                        Name = "Use under LICX",
                        Url = new Uri("https://example.com/license"),
                    }
                });
            });
        }

下面是我的Configure方法:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
       {
           //if (env.IsDevelopment())
           //{
           //    app.UseDeveloperExceptionPage();
           //}

           /// Enable middleware to serve generated Swagger as a JSON endpoint.
           app.UseSwagger();
           // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
           // specifying the Swagger JSON endpoint.
           app.UseSwaggerUI(c =>
           {
               c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
           });
           //app.UseHttpsRedirection();

           app.UseRouting();

           //app.UseAuthorization();

           app.UseEndpoints(endpoints =>
           {
               endpoints.MapControllers();
           });


       }
igsr9ssn

igsr9ssn1#

app.UseSwaggerUI(c =>
 {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = "";
 });

右键单击您的项目,并选择调试在您的左侧面板和您的lauch broswer(绝对或相对网址)只是让它空着。

6mw9ycah

6mw9ycah2#

尝试清理生成并生成项目。
如果仍然不起作用,请确保您的控制器中没有不带ActionVerbs的方法,即:HttpGet, HttpPost等等。Swagger要求所有控制器方法都具有ActionVerbs,除了那些具有[ApiExplorerSettings(IgnoreApi = true)]属性的方法。
您的任何方法都不应与ActionVerb沿着定义路由:执行[HttpGet,Route("getuser")]而不是[HttpGet("getuser")]

xfb7svmp

xfb7svmp3#

在我的例子中,@Sydney_dev的答案不起作用。删除RoutePrefix设置后,它工作了,但让我解释一下。
SwaggerUI可以通过类似于https://localhost:5826/[RoutePrefix]的URL访问。访问时会返回一个永久重定向到您可以测试API的页面。此永久重定向存储在浏览器中,即使RoutePrefix被更改也有效。这可能会导致重定向并显示HTTP状态为404(未找到)的空页面。
此外,当您开始调试应用程序时,将使用播放按钮旁边的配置,例如UnifiedStockExchange在下图中使用:

该配置在Properties/launchSettings.json中搜索。在我的示例中,指定了以下设置:

"launchUrl": "swagger"

这意味着当应用程序开始调试时,它会打开一个类似于https://localhost:5826/swagger的URL。当RoutePrefix被设置为空时,SwaggerUI不在那里。或者更改launchUrl,或者删除RoutePrefix,或者在启动调试器后更改URL。

相关问题