2016-06-09 8 views
6

Ich habe ein WebApi-Projekt mit Swashbuckle installiert.Wie von Root-URL zu/Swagger/UI/Index umleiten?

In der Standardkonfiguration muss ich im Browser öffnen http://localhost:56131/swagger/ui/index, um meine Betriebsbeschreibung und Testseite anzuzeigen. Ich möchte, dass es vom Stammverzeichnis der Website zugänglich ist: http://localhost:56131/. Wie kann ich das erreichen?

+0

konnten Sie dieses @ kpa6uk auflösen? – Sampada

+0

@Sampada nein, habe ich nicht. Ich glaube, dass dies mit einigen Web-API-Redirect gelöst werden kann, und Swagger ist nur mein Fall. Ich habe diese Aufgabe für weitere Forschungen pausiert. –

+0

Haben Sie sich meine Antwort angesehen? Betrachten Sie es als Lösung, wenn es geholfen hat – bsoulier

Antwort

15

von this answer to similar question Beeinflusst, leicht modifizierte Code:

public class WebApiConfig 
{ 
    public static void Configure(IAppBuilder app) 
    { 
     var httpConfig = new HttpConfiguration(); 

     // Attribute routing 
     config.MapHttpAttributeRoutes(); 

     // Redirect root to Swagger UI 
     config.Routes.MapHttpRoute(
      name: "Swagger UI", 
      routeTemplate: "", 
      defaults: null, 
      constraints: null, 
      handler: new RedirectHandler(SwaggerDocsConfig.DefaultRootUrlResolver, "swagger/ui/index")); 

     // Configure OWIN with this WebApi HttpConfiguration 
     app.UseWebApi(httpConfig); 
    } 
} 

Auf diese Weise ist es nicht notwendig ist, neue WebAPI Controller zu erstellen, wie so @bsoulier in seiner Antwort hat.

Diese Lösung basiert auf der bereits bestehenden Klasse RedirectHandler in Swashbuckle.Core Montage.

+0

Froh, Sie wies auf die. Trim ('/') - Ich habe das erste Mal vermisst! –

4

Wenn für Sie sicher, dass ein Web-API-Projekt verwenden, können Sie:

  • ermöglichen Http Attribute Routing,
  • die folgende Methode innerhalb eines bestehenden oder neuen Controller erstellen:
[Route(""), HttpGet] 
[ApiExplorerSettings(IgnoreApi = true)] 
public HttpResponseMessage RedirectToSwaggerUi() 
{ 
    var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Found); 
    httpResponseMessage.Headers.Location = new Uri("/swagger/ui/index", UriKind.Relative); 
    return httpResponseMessage; 
} 

Hinweis die Verwendung von ApiExplorerSettings Attribut, so dass es nicht in der Swagger-Definition angezeigt wird.