2016-06-09 37 views
6

Ho un progetto WebApi con Swashbuckle installato su di esso.Come reindirizzare dall'URL di root a/swagger/ui/index?

Nella configurazione predefinita, devo aprire nel browser http://localhost:56131/swagger/ui/index per visualizzare la descrizione delle operazioni e la pagina di test. Voglio che sia accessibile dalla radice del sito: http://localhost:56131/. Come posso raggiungere questo obiettivo?

+0

sei riuscito a risolvere questo @ kpa6uk? – Sampada

+0

@Sampada no, non l'ho fatto. Credo che questo possa essere risolto con qualche reindirizzamento web api, e lo spavaldo è solo il mio caso. Ho sospeso questo compito per ulteriori ricerche. –

+0

Hai dato un'occhiata alla mia risposta? Prendi in considerazione la possibilità di contrassegnarlo come soluzione se ha aiutato – bsoulier

risposta

15

influenzato da this answer to similar question, il codice leggermente modificato:

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); 
    } 
} 

In questo modo non è necessario creare nuovo controller WebAPI come così ha fatto @bsoulier nella sua risposta.

Questa soluzione è basata sulla classe esistente RedirectHandler nell'assieme Swashbuckle.Core.

+0

Contento che hai sottolineato il .trim ('/') - Ho perso questa prima volta! –

4

Se di sicuro utilizzare un progetto Web API, è possibile:

[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; 
} 

Nota l'uso dell'attributo ApiExplorerSettings, in modo che non venga visualizzato nella definizione Swagger.