Swagger хорошо работал для меня в моем приложении Web API 2.2 по следующему адресу: http://localhost:52056/swagger. Однако я недавно обновил решение для поддержки управления версиями, поэтому теперь оно поддерживает api / v1 / и api / v2 /. Теперь URL Swagger, который я использовал, возвращает следующую ошибку при загрузке страницы Swagger:
Не могу прочитать чванство JSON из http://localhost:52056/undefined
Как мне обновить SwaggerConfig.cs для поддержки Swagger для разных версий API? Вот мой текущий SwaggerConfig.cs:
using System.Web.Http;
using WebActivatorEx;
using Janus.SecurityApi.Api;
using Swashbuckle.Application;
using System.Configuration;
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
namespace SecurityApi.Api
{
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.RootUrl(req => GetRootUrlFromAppConfig());
c.Schemes(new[] { GetSchemeFromAppConfig() });
c.SingleApiVersion("v1", "Security API");
c.IncludeXmlComments(
string.Format(
@"{0}\App_Data\SecurityApi.Api.xml",
System.AppDomain.CurrentDomain.BaseDirectory));
c.IncludeXmlComments(
string.Format(
@"{0}\App_Data\SecurityApi.Core.xml",
System.AppDomain.CurrentDomain.BaseDirectory));
})
.EnableSwaggerUi(c =>
//for non-public sites, error widget will display
//at bottom of swagger page unless disabled
c.DisableValidator()
);
}
private static string GetRootUrlFromAppConfig()
{
return ConfigurationManager.AppSettings["swaggerBaseUrl"];
}
private static string GetSchemeFromAppConfig()
{
return ConfigurationManager.AppSettings["swaggerScheme"];
}
}
}