2014-02-12 5 views
0

Я новичок в веб-API и следил за некоторыми примерами, но я не могу определить, где указано имя контроллера.Путь веб-API-контроллера?

У меня есть это в моем global.asax:

protected void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapHttpRoute(
    name: "API Controller", 
    routeTemplate: "api/{controller}/{action}/{id}", 
    defaults: new { id = System.Web.Http.RouteParameter.Optional } 
    ); 
} 

У меня есть контроллер называется TestAPI.cs

и это содержание:

namespace Testing 
{ 
    public class TestAPI : ApiController 
    { 
     // GET api/<controller> 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "value1", "value2" }; 
     } 

     // GET api/<controller>/5 
     public string Get(int id) 
     { 
      string test= "Hello!"; 
      return test 
     } 
    } 
} 

Я только положить «return test» там как пример для переполнения стека, поскольку он содержит много кода.

Итак, если я использую это в jQuery, какой путь я буду использовать для контроллера?

+0

Ваше имя контроллера должно быть TestAPIController.cs – Jonesopolis

+0

Контроллер может быть расположен в любом месте проекта, но рекомендуется хранить его под контроллерами. Имя файла может быть любым. Выполняйте поиск по всему проекту для класса 'TestAPIController'. –

+0

Хм, мне кажется, что я получаю сообщение об ошибке 404 за все, что я пробовал? – realtek

ответ

5

Помимо именования о вашем веб-имя контроллера Апи, также необходимо изменить конфигурацию маршрута. смотри ниже:

1) Изменение TestAPI контроллера, как показано ниже:

public class TestAPIController : ApiController 

2) изменить MapHttpRoute в методе Application_Start, как показано ниже:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
     name: "API Controller", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

Примечание: Не забывайте также изменить фактическую форму имени файла TestAPI.cs на TestAPIController.cs.

+0

Привет, Лин, я изменил это в соответствии с вашим ответом, но все равно не повезло! Дает мне 404! Спасибо – realtek

+0

привет @realtek, я думаю, вы забыли изменить имя файла TestAPI.cs на TestAPIController.cs, см. Мой обновленный ответ. – Lin

+0

Привет, Линь, Да, я тоже сделал это, но все равно не повезло. Не могли бы вы подтвердить структуру файловой системы? Так что, например, TestAPIController.cs находится внутри api/Controllers/TestAPIController.cs? Или он действительно не смотрит на какую-либо файловую систему?Спасибо – realtek

0

Это должно быть просто

http://[yourserver]/[yourapp]/api/testapi 

или

http://[yourserver]/api/testapi 

В зависимости от того, как настроить приложение

+0

Хмм, я, кажется, все время получаю сообщение об ошибке 404 за все, что я пытаюсь? – realtek

1

Переименовать контроллер TestApiController и удалить {действие} параметр из маршрута ,

0

Разве ваше имя контроллера не должно заканчиваться на «Контроллере», даже если это контроллер WebApi?

Я думаю

public class TestAPI : ApiController 

должен быть

public class TestAPIController : ApiController