2016-06-09 19 views
6

我有一個安裝了Swashbuckle的WebApi項目。如何從根網址重定向到/ swagger/ui/index?

在默認設置下,我必須打開瀏覽器http://localhost:56131/swagger/ui/index才能查看我的操作說明和測試頁面。我希望它可以從站點的根目錄訪問:http://localhost:56131/。我怎樣才能做到這一點?

+0

你能解決這個@ kpa6uk嗎? – Sampada

+0

@桑帕達不,我沒有。我相信這可以通過一些web api重定向來解決,而swagger就是我的例子。我暫停了這項任務以作進一步研究。 –

+0

你看過我的回答嗎?考慮將它標記爲解決方案,如果它有幫助 – bsoulier

回答

15

通過this answer to similar question影響,略作修改代碼:

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

這樣,它不是必要的,因爲這樣做在他的回答@bsoulier創造新的WebAPI控制器。

此解決方案基於Swashbuckle.Core組件中的已有類RedirectHandler

+0

很高興您指出.trim(' /') - 我第一次錯過了! –

4

如果您肯定使用Web API項目,您可以:

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

注使用ApiExplorerSettings屬性,這樣它就不會出現在Swagger定義中。