我有一个Web api 2项目。它被配置为使用owin自托管。它没有任何global.asax文件。我需要Web api的帮助页面,并已使用swaschbuckle。但是rooturl / swagger / docs没有给出任何输出。
我已经按照'https://github.com/domaindrivendev/Swashbuckle/issues/196'的说明进行操作,但是仍然无法正常工作。下面是我的配置代码
public void Configuration(IAppBuilder app)
{
// Configure DI
container = BuildDI();
// Create the configuration. OWIN Should create a new httpconfiguration.
// GlobalConfiguration can't be used.
HttpConfiguration = new HttpConfiguration();
HttpConfiguration.Formatters.XmlFormatter.UseXmlSerializer = true;
HttpConfiguration.MapHttpAttributeRoutes();
HttpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
// Set ServicePointManager properties.
ServicePointManager.ServerCertificateValidationCallback = ((sender, cert, chain, sslPolicyErrors) => true);
// 10 concurrent connections can be made on the service point.
ServicePointManager.DefaultConnectionLimit = 10;
// After the idle time expires, the ServicePoint object is eligible for
// garbage collection and cannot be used by the ServicePointManager object.
ServicePointManager.MaxServicePointIdleTime = 30000; // 30 Seconds.
app.UseSerilogRequestContext("RequestId");
// Middleware is injected form DI.
app.UseAutofacMiddleware(container);
app.UseAutofacWebApi(HttpConfiguration);
//Enable swashbuckle
SwaggerConfig.Register(HttpConfiguration);
// Webapi middleware. Do it at the end.
app.UseWebApi(HttpConfiguration);
// Register callback to dispose container.
RegisterShutdownCallback(app, container);
}
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
config.EnableSwagger(c =>
{
c.RootUrl(rurl => ConfigurationManager.AppSettings["hostUrl"].ToString());
c.IncludeXmlComments(GetXmlCommentsFileLocation());
c.SingleApiVersion("v1", "Isone");
})
.EnableSwaggerUi(c =>
{
});
}
private static string GetXmlCommentsFileLocation()
{
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\bin";
var commentsFileName = Assembly.GetExecutingAssembly().GetName().Name + ".XML";
var commentsFileLocation = Path.Combine(baseDirectory, commentsFileName);
return commentsFileLocation;
}
}
如果代码中有错误,请指出错误。
步骤应如下:
1]将“ Swashbuckle.Core”添加为NuGet依赖项(OWIN仅需要核心程序包)
package.json
<packages>
<package id="Swashbuckle.Core" version="5.5.3" targetFramework="net462" />
...
</packages>
[2)在您的启动类注册时大摇大摆
Startup.cs
public partial class Startup
{
/// <summary>
/// Used to create an instance of the Web application
/// </summary>
/// <param name="app">Parameter supplied by OWIN implementation which our configuration is connected to</param>
public void Configuration(IAppBuilder app)
{
// Wire-in the authentication middleware
ConfigureAuth(app);
// In OWIN you create your own HttpConfiguration rather than re-using the GlobalConfiguration.
HttpConfiguration config = new HttpConfiguration();
// Handle registration of Swagger API docs
SwaggerConfig.Register(config);
// Handles registration of the Web API's routes
WebApiConfig.Register(config);
// Register web api
app.UseWebApi(config);
}
SwaggerConfig.cs
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
config
.EnableSwagger(c =>
{
c.IncludeXmlComments(GetXmlCommentsPath());
})
.EnableSwaggerUi(c =>
{
c.EnableApiKeySupport("Authorization", "header");
});
}
private static string GetXmlCommentsPath()
{
return $@"{AppDomain.CurrentDomain.BaseDirectory}\bin\Example.XML";
}
}
[3)在构建属性中启用XML文档输出
[4) Swagger UI将通过swagger / ui / index提供