托管我的 asp.net core 1.2 应用程序后,我收到如下错误:
swagger 无法找到该
swagger.json
文件。
我试图通过提供一个虚拟路径名来解决这个问题,app.UseSwaggerUI()
但它不起作用。
编辑以根据评论澄清问题:
在 IIS 中托管 Asp.net 核心应用程序后,该swagger.json
文件正在localhost:<random_port>/swagger/v1/swagger.json
路径上生成。
如何swagger.json
在自定义路由上提供文件,例如:localhost:<random_port>/virtualpathname/swagger/v1/swagger.json
我试图在 app.UseSwaggerUI() 中设置一个虚拟路径,{virtualpathname}/swagger/v2/swagger.json
但仍然无法正常工作
可能有几个原因 - 一个是 .Net Core 默认不提供静态文件(尽管查看在线示例这似乎不是问题)。
如果您还没有,请尝试安装软件包Microsoft.AspNetCore.StaticFiles
并使用以下配置添加UseStaticFiles()
您的Configure()
方法Startup.cs
。我不认为顺序很重要,但这是我在工作应用程序中运行的顺序。
public void Configure(...)
{
// Enable middleware to serve static files (like .json)
app.UseStaticFiles();
//Enable middleware for your API
app.UseMvc();
// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "YourApp API V1");
});
}
您还需要SwaggerGen
在您的ConfigureServices()
方法中配置中间件。
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "api_name", Version = "1.0"});
});
根据评论编辑- 在自定义路线上提供 swagger json:
// Enable middleware to serve generated Swagger as a JSON endpoint on a custom endpoint
app.UseSwagger(c => c.RouteTemplate = "custom/swagger/{documentName}/swagger.json");
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
// Using custom endpoint defined above
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "YourApp API V1");
});
如果您还需要在自定义路由上提供 SwaggerUI,则:
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
// Using custom endpoint defined above
// And serving UI on a custom route
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "YourApp API V1");
c.RoutePrefix = "custom"; // serves UI on http://{domain}:{port}/custom/
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句