Asp.net web api 如何在ASP.NET Web Api中设置swagger basePath?

Asp.net web api 如何在ASP.NET Web Api中设置swagger basePath?,asp.net-web-api,swagger,swashbuckle,Asp.net Web Api,Swagger,Swashbuckle,我已经为ASP.NET web应用程序启用了swagger文档。如何设置基本路径 GlobalConfiguration.Configuration .EnableSwagger(c => { c.SingleApiVersion("v1", "MyApi") .Description("This is my API."); c.IncludeXmlComments($@"{AppDomain.CurrentDomain.BaseDirectory}\bin\MyApi

我已经为ASP.NET web应用程序启用了swagger文档。如何设置基本路径

GlobalConfiguration.Configuration .EnableSwagger(c => { 
    c.SingleApiVersion("v1", "MyApi") .Description("This is my API."); 
    c.IncludeXmlComments($@"{AppDomain.CurrentDomain.BaseDirectory}\bin\MyApi.XML");
}) .EnableSwaggerUi(c => {});
目前生成的API说明如下:

"swagger": "2.0",
"host": "localhost:8080",
"basePath": "/",
我想将其更改为:

"swagger": "2.0",
"host": "localhost:8080",
"basePath": "/myapi",

您需要将RootUrl添加到配置中,例如:

GlobalConfiguration.Configuration.EnableSwagger(c=>{
c、 SingleAPI版本(“v1”,“MyApi”)。描述(“这是我的API”);
c、 includexmlcoments($@“{AppDomain.CurrentDomain.BaseDirectory}\bin\MyApi.XML”);
c、 RootUrl(请求=>{return“http://localhost:8080/myapi"; });
}).EnableSwaggerUi(c=>{});

你能分享你的一些代码吗?添加对Swashback nuget软件包的引用,该软件包会自动将swaggerConfig.cs文件添加到App_Start文件夹中。swagger UI和JSON文档非常好。我只想设置基本路径<代码>全局配置.Configuration.EnableSwagger(c=>{c.SingleApiVersion(“v1”,“MyApi”).Description(“这是我的API”);c.includexmlcoments($@{AppDomain.CurrentDomain.BaseDirectory}\bin\MyApi.XML”);})其他内容进行注释。我只粘贴了当前使用的(未注释的)代码。它太大了,不能贴在这里;stackoverflow不允许。它甚至不允许上传文件。请创建新的ASP.NET Web Api项目并添加对Swashback的引用。否则,给我你的电子邮件id,我会把文件发电子邮件给你。查看评论,看看是否有什么突出的地方。。。我想你需要的是在stackoverflow上发布问题之前,我尝试了所有方法,但找不到任何解决方案。RootUrl的用途是“默认情况下,服务根url是从用于访问文档的请求中推断出来的。但是,在某些情况下(例如,代理和负载平衡环境),这可能无法正确解决。您可以通过提供自己的代码来确定根url来解决此问题。”。您是否在任何项目中实施了swagger文档?您知道为ASP.NET Web API设置基本路径的确切解决方案吗?这将基本路径添加到swagger文档中,但不是将“/swagger”重定向到“/swagger/ui/index”,而是重定向到“/myapi/swagger/ui/index”,这会导致404错误。我可以直接浏览到“/swagger/ui/index”,但它再次给出了一个错误“无法从中读取swagger JSON”。还有一个问题是,它只会将“/myapi”添加为basePath,但不会从各个API中删除它。这可以通过手动编辑JSON文档或使用powershell更新文档来解决。@Venky您不必在Swashback之外做任何事情,查看IDocumentFilters以转换swagger jsonI注释出来的设置RootUrl;现在我的大摇大摆的用户界面回来了。使用DocumentFilter将基本路径设置为“/myapi”,并从每个路径中删除相同的路径。我不知道这样做是否正确,但它解决了我所有的问题。非常感谢@HelderSepu。你太棒了<代码>swaggerDoc.basePath=“/myapi”;var path=swaggerDoc.path.ToList();foreach(路径中的var path){swaggerDoc.paths.Remove(path.Key);swaggerDoc.paths.Add(path.Key.Replace(swaggerDoc.basePath,string.Empty),path.Value);}