2016-06-19 14 views
1

Ich habe ein WebApi2 Setup auf der Grundlage von Attribut Routing gekämpft und ich habe keine Ideen mehr, was das Problem sein kann. Der folgende Code ist ein neu erstelltes WebApi-Projekt von Visual Studio 2015. Darin sind keine Änderungen enthalten. Es funktioniert einfach nicht.Warum funktioniert dieses Webapi2-Attribut-Routing nicht?

Die Antwort sagt der folgende:

<Error> 
<Message> 
No HTTP resource was found that matches the request URI 'http://.../services/webapi2/api/dummies/dummymethod'. 
</Message> 
<MessageDetail> 
No type was found that matches the controller named 'dummies'. 
</MessageDetail> 
</Error> 

Was ich bisher tat:

  • ich die Dokumentation überprüft haben, ob ich etwas verpasst - alles scheint in Ordnung und für die Dokumentation passen.
  • Ich habe die verfügbaren Antworten hier geprüft, ob ich etwas Nützliches finden - ich habe alles, was ich ohne Erfolg

Vielen Dank für jede Hilfe im Voraus gefunden versucht!

DummyController.cs

using System.Web.Http; 

namespace WebApi2.Controllers 
{ 
    [RoutePrefix("Dummies")] 
    public class Dummy : ApiController 
    { 
     [Route("dummymethod")] 
     public string Get() 
     { 
      return "asdasd"; 
     } 
    } 
} 

WebApiConfig.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web.Http; 

namespace WebApi2 
{ 
    public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

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

Installierte Pakete:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" /> 
    <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" /> 
    <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net452" /> 
</packages> 

Antwort

4

Sie Attribut verwenden Routing mit einer Route Präfix nur dummies so wäre es Karte zu dieser URL

http://.../services/webapi2/dummies/dummymethod 

Also entweder die obige URL verwenden oder Ihre Route Präfix aktualisieren api enthalten die URL in Ihrem Beispiel

namespace WebApi2.Controllers 
{ 
    [RoutePrefix("api/Dummies")] 
    public class Dummy : ApiController 
    { 
     //GET api/dummies/dummymethod 
     [HttpGet] 
     [Route("dummymethod")] 
     public string Get() 
     { 
      return "asdasd"; 
     } 
    } 
} 

Die oben entspricht der Anforderungs-URI http://.../services/webapi2/api/dummies/dummymethod

verwendet anzupassen