2015-12-30 13 views
5

Mam aplikację WebAPI, która jest używana do niektórych operacji RESTful w bazie danych. Działa wspaniale, ale chcę dopasować trasę do głównego adresu URL. Na przykład chcę przejść do katalogu głównego witryny i zobaczyć kilka przydatnych informacji generowanych dynamicznie.Trasa WebAPI do adresu URL root

Obecnie mam go skonfigurowany tak, aby był zgodny ze standardową konwencją api/{controller}/{action}, ale jak mogę wyświetlić te informacje po przejściu do katalogu głównego zamiast czegoś takiego jak api/diagnostics/all?

Zasadniczo czego chcę jest, gdy użytkownik przechodzi do głównego adresu URL, chcę trasa że żądać TestController.Index()

Mam następujących konfiguracji w pliku WebApiConfig.cs:

public static void Register(HttpConfiguration config) 
{ 
    // Web API routes 
    config.MapHttpAttributeRoutes(); 

    config.Routes.MapHttpRoute(
     name: "Index", 
     routeTemplate: "", 
     defaults: new { controller = "Test", action = "Index" } 
    ); 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional, controller = "Test" } 
    ); 
} 

a to, co moi TestController.cs wygląda następująco:

[RoutePrefix("api")] 
public class TestController : ApiController 
{ 

    [Route("TestService"), HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    }   
} 
+2

Twoje pytanie jest dość niejasne proszę opracować – Kayani

Odpowiedz

4

Zasadniczo czego chcę jest, gdy użytkownik przechodzi do głównego adresu URL, ja chcą trasie tego wniosku TestController.Index()

W tym przypadku upewnij się, że nie zostały urządzone swoje działania TestController.Index z tego atrybutu:

[Route("TestService")] 

Tak oto w jaki sposób TestController może wyglądać następująco:

[RoutePrefix("api")] 
public class TestController : ApiController 
{ 
    [HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    } 
} 

A teraz po prostu przejść do / lub /api.

+0

Dzięki Darin. Moje życie jest teraz kompletne. – hyde

4

Możesz dodać trasę do domyślnego adresu URL w WebApiConfig.cs. Oto przykład, w którym URL korzeń jest mapowany do sposobu HomeController.Index():

config.Routes.MapHttpRoute(
    name: "Root", 
    routeTemplate: "", // indicates the root URL 
    defaults: new { controller = "Home", action = "Index" } // the controller action to handle this URL 
); 
+0

ta nie działa dla mnie:/ – hyde

+0

Proszę spojrzeć na zaktualizowanej pytaniu powyżej. – hyde

+0

Dzięki mate .. Pracował jak urok! –

3

Można też po prostu użyć ([Route("")]):

public class TestController : ApiController 
{ 

    [Route(""), HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    }   
} 
Powiązane problemy