2016-08-23 3 views
1

Я новичок в Asp.Net и пытался разработать небольшой веб-API в процессе обучения.WebApi не работает в ASP.Net

WebApiConfig.cs

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

TopicsController.cs

namespace MessageBoard.Controllers 
{ 
    public class TopicsController : ApiController 
    { 
     private IMessageBoardRepository _repo; 

     public TopicsController(IMessageBoardRepository repo) 
     { 
      _repo = repo; 
     } 
     public IEnumerable<Topic> Get() 
     { 

      var topics = _repo.GetTopics() 
          .OrderByDescending(t => t.Created) 
          .Take(25) 
          .ToList(); 
      return topics; 
     } 
    } 
} 

На самом деле я смотрю Pluralsight учебники.

http://localhost:50031/api/v1/topics 

Этот URL не работает в браузере не в Скрипач 4.

все ссылки добавляются. Я также сделал Build Solution, но он не работает, и их ошибка не отображается в коде.

ответ

2

Один последний шаг, чтобы включить веб-Апи, который выглядит, как вы упускаете это позволяет веб-API в файле Global.asax, добавив следующую строку кода в Application_Start() метода:

WebApiConfig.Register(GlobalConfiguration.Configuration); 

Кроме того, пожалуйста, не используйте номер порта из учебника PluralSight. Вам нужно запустить проект веб-приложения из своего экземпляра Visual Studio, и когда он откроется в браузере, вы увидите, какой порт назначен YOUR api service.So if вы видите, что он назначил порт 12345, например, вы вызываете следующий URL-адрес для доступа к действию службы:

http://localhost:12345/api/v1/topics 
+0

Спасибо за ответ, но сэр его не работает в моем случае. – atifaltaf

+0

Посмотрите обновление, пожалуйста. Вы используете веб-проект api в Visual Studio и используете ли вы подходящий порт при совершении вызова? –

+0

Работает путем добавления «GlobalConfiguration.Configure (WebApiConfig.Register)»; В разделе «AreaRegistration.RegisterAllAreas()»; Спасибо, что сэр за то, что дал мне указания – atifaltaf

1

Добавить атрибут маршрутизации к контроллеру

[Route("api/v1/topics")] 
public IEnumerable<Topic> Get() 
    { 

     var topics = _repo.GetTopics() 
         .OrderByDescending(t => t.Created) 
         .Take(25) 
         .ToList(); 
     return topics; 
    } 
+0

Спасибо за ответ, но сэр его не работает в моем случае. – atifaltaf

+0

Если нет, то проблема в другом месте не в маршрутизации – Mostafiz

+0

Спасибо большое за то, что вы дали мне свое драгоценное время. – atifaltaf

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