WebApi不能在ASP.Net中工作

时间:2016-08-23 07:51:54

标签: c# asp.net asp.net-web-api asp.net-mvc-5

我是Asp.Net的新手,并尝试在学习过程中开发一个小型Web API。

  

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无法在浏览器中使用,不在Fiddler 4中。

添加所有引用。我也完成了构建解决方案,但它没有工作,并且代码中没有显示错误。

2 个答案:

答案 0 :(得分:2)

通过向Application_Start()方法添加以下代码行,启用看起来像您缺少的Web Api的最后一步是在Global.asax文件中启用Web API:

WebApiConfig.Register(GlobalConfiguration.Configuration);

另外,请不要使用PluralSight教程中的端口号。您需要从Visual Studio实例运行Web应用程序项目,当它在浏览器中打开时,您将看到分配给哪个端口您的 api服务。如果您看到它分配了端口12345,您可以调用以下URL来访问服务操作:

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

答案 1 :(得分:1)

将属性路由添加到控制器

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

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