2016-05-28 4 views
1

Ich habe meine WebApiConfig Setup wie folgt aus:Web-API-Anruf erreicht keine Aktion?

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

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

ich die Strecke in Global.asax registriert haben, wie folgt:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     WebApiConfig.Register(GlobalConfiguration.Configuration); 
    } 

api Controller-Klasse sieht wie folgt aus My Web:

[RoutePrefix("api/upload")] 
public class UploadController : ApiController 
{ 
    [HttpGet] 
    [Route("")] 
    public string Upload() 
    { 
     return "hello"; 
    } 
} 

Ich mache Aufruf an die Web-API-Aktion in Fiddler wie im Bild unten gezeigt:

enter image description here

Ich bekomme 404 nicht gefunden nicht gefunden Fehler, wenn ich die Anfrage sende. Was mache ich falsch?

+0

Ist es Kreuz Ursprung Anfrage Fehler? – Pushpendra

+0

Nein. Die Anforderung wird an dieselbe Domäne gesendet, auf der der IIS-Server ausgeführt wird. –

+0

Wird während des Anrufs eine Instanz des Dienstes ausgeführt? – Pushpendra

Antwort

2

Versuchen Web API vor MVC Route Zuordnungen zu konfigurieren:

protected void Application_Start() 
{ 
    WebApiConfig.Register(GlobalConfiguration.Configuration); 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

Was ich glaube, geschieht, ist, dass der Rahmen eine Route zu einer MVC abzubilden versucht. Es wird angenommen, dass dieser URI localhost:8170/api/upload sich auf einen MVC-Controller namens Api mit einer Aktion namens Upload bezieht.

Die Registrierung von Web-API-Routen vor der MVC ermöglicht es dem Framework, die mit api/ beginnenden Routen mit der korrekten ApiController zu verknüpfen.