2015-12-30 3 views
6

У меня есть веб-проект api 2. Он настроен на самообслуживание с использованием owin. Он не имеет никакого файла global.asax. Мне нужно иметь страницы справки для веб-api и использовать swaschbuckle для этого. Но rooturl/swagger/docs не дает никакого выхода. Я следую инструкциям здесь 'https://github.com/domaindrivendev/Swashbuckle/issues/196', но он все еще не работает. Ниже мой код конфигурацииSwashbuckle swagger не работает

 
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

шаги должны быть следующими:

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 [email protected]"{AppDomain.CurrentDomain.BaseDirectory}\bin\Example.XML"; 
    } 
} 

3) Включить вывод XML документации в свойствах сборки

Build Properties

4) Кураж UI будет подано по адресу swagger/ui/index

enter image description here

Смежные вопросы