这是我的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();
});
}
3条答案
按热度按时间igsr9ssn1#
右键单击您的项目,并选择调试在您的左侧面板和您的lauch broswer(绝对或相对网址)只是让它空着。
6mw9ycah2#
尝试清理生成并生成项目。
如果仍然不起作用,请确保您的控制器中没有不带ActionVerbs的方法,即:
HttpGet, HttpPost
等等。Swagger要求所有控制器方法都具有ActionVerbs,除了那些具有[ApiExplorerSettings(IgnoreApi = true)]
属性的方法。您的任何方法都不应与ActionVerb沿着定义路由:执行
[HttpGet,Route("getuser")]
而不是[HttpGet("getuser")]
xfb7svmp3#
在我的例子中,@Sydney_dev的答案不起作用。删除
RoutePrefix
设置后,它工作了,但让我解释一下。SwaggerUI可以通过类似于https://localhost:5826/[RoutePrefix]的URL访问。访问时会返回一个永久重定向到您可以测试API的页面。此永久重定向存储在浏览器中,即使
RoutePrefix
被更改也有效。这可能会导致重定向并显示HTTP状态为404(未找到)的空页面。此外,当您开始调试应用程序时,将使用播放按钮旁边的配置,例如UnifiedStockExchange在下图中使用:
该配置在Properties/launchSettings.json中搜索。在我的示例中,指定了以下设置:
这意味着当应用程序开始调试时,它会打开一个类似于https://localhost:5826/swagger的URL。当
RoutePrefix
被设置为空时,SwaggerUI不在那里。或者更改launchUrl
,或者删除RoutePrefix
,或者在启动调试器后更改URL。