2017-08-22 1 views
0

Ich habe zwei Controller, die verschiedene Aktion Name enthalten, ich versuche auf sie zuzugreifen, ich kann auf PrepareTransmitaltalLetterPath unter Transmittal Controller zugreifen, aber nicht auf PrepareConcreteReport unter zugreifen Betonregler.Ich kann nicht auf zwei verschiedene Aktionen unter zwei verschiedenen Controllern in Web-API zugreifen

Möglicherweise funktioniert meine Web-API-Route nicht richtig. Danke im Voraus.

Transmittal-Controller - wo TransmittalApi eine Klasse ist

public string PrepareTransmittalLetterPath(TransmittalApi transmittalApi) 
{ 

} 

Beton Controller- wo ConcreteReportApi ist eine Klasse

public ConcreteReportApi PrepareConcreteReport(ConcreteReportApi concreteApi) 
{ 

} 

WebApiConfig-

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
      config.Routes.MapHttpRoute(
      name: "Api", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 

     ); 

    } 
} 
+0

Was ist der Endpunkt (URL), den Sie versuchen? haben Sie auch andere Aktionsmethoden in der Steuerung, die auf Ihren Anruf reagiert? Welche Antwort bekommst du? – Shyju

+0

Ich versuche auf den konkreten Controller zuzugreifen mit 'response = confClient.PostAsJsonAsync ("api/Concrete/PrepareConcreteReport/0", concreteApi) .Result;' und ich erhalte den Fehler 404, Es wurde keine HTTP-Ressource gefunden, die der Anforderungs-URI http: // localhost: 45874/api/Concrete/PrepareConcreteReport entspricht – Swapnil

Antwort

1

Mit Konvention basierten Routen Mittel Die Namen Ihrer Aktionsmethoden müssen mit Get.... oderbeginnen.

Um die Aktion zu finden, sucht die Web-API nach der HTTP-Methode und sucht dann nach einer Aktion, deren Name mit diesem HTTP-Methodennamen beginnt. Bei einer GET-Anforderung sucht die Web-API beispielsweise nach einer Aktion, die mit "Get ..." beginnt, z. B. "GetContact" oder "GetAllContacts". Diese Konvention gilt nur für die Methoden GET, POST, PUT und DELETE. Sie können andere HTTP-Methoden aktivieren, indem Sie Attribute auf Ihrem Controller verwenden.

Weitere Informationen finden Sie unter Routing in Asp.Net Web API.

Verwandte Themen