托管我的asp.net核心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
,但它仍无法正常工作
答案 0 :(得分:1)
可能有几个原因 - 一个是.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/
});
答案 1 :(得分:0)
我建议你执行接下来的两个步骤。
注意:第一步是为您提供有关您所面临的错误的更多详细信息。
答案 2 :(得分:0)
在我的情况下,问题是我通过添加相对路径(../)修复的虚拟目录。在任何情况下,请确保首先设置ConfigureServices,然后在配置时确保一切正常,UseSwagger应该在UseMvc之前,最后是UseSwaggerUI
32
答案 3 :(得分:0)
在startup.cs类上更改以下内容:
radviz(iris, 'species',None,color=sns.color_palette())
收件人
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyService.API v1");
});
[MyWebsiteName]是在IIS中配置的应用程序的名称。