2016-06-19 2 views
1

Я боролся с настройкой WebApi2, основанной на маршрутизации атрибутов, и у меня закончились идеи, что может быть проблемой. Следующий код - это новый проект WebApi от Visual Studio 2015. В нем нет изменений. Это просто не работает.Почему эта маршрутизация атрибута webapi2 не работает?

Отклик говорит следующее:

<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> 

То, что я сделал до сих пор:

  • Я проверил документацию пропустил ли я что-то - все, кажется, хорошо, и приспосабливает для документации.
  • Я проверил доступные ответы найти здесь ли я что-то полезное - я попробовал все, что я нашел, но безуспешно

Спасибо за любую помощь заранее!

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

Установленные пакеты:

<?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> 

ответ

4

Вы используете атрибут маршрутизации с маршрута префиксом только dummies поэтому было бы карту к этому адресу

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

Так что либо использовать выше URL или обновить свой префикс маршрута включить api в соответствии с URL, используемый в вашем примере

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

выше соответствует запросу URI http://.../services/webapi2/api/dummies/dummymethod

Смежные вопросы