无法访问ASP.NET MVC Web Api端点

时间:2014-09-29 14:34:44

标签: asp.net asp.net-mvc

我正在开发一个ASP.NET MVC应用程序。我正在尝试创建一个基本的API。我通过右键单击Controllers,Add - >创建了我的第一个Web API控制器。控制器...然后选择“Web API 2控制器 - 空”。在控制器代码中,我有以下内容:

namespace MyProject.Controllers
{
    public class MyApiController : ApiController
    {
        public IHttpActionResult Get()
        {
            var results = new[]
            {
                new { ResultId = 1, ResultName = "Bill" },
                new { ResultId = 2, ResultName = "Ted" }
            };
            return Ok(results);
        }
    }
}

当我运行应用程序时,我在浏览器的地址栏中输入http://localhost:61549/api/myApi。不幸的是,我得到了404.我只是想创建一个API端点,它返回一组硬编码的JSON对象。我需要这个来测试一些客户端JavaScript。我究竟做错了什么?

以下是我的路线注册方式: 的 WebApiConfig.cs

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

RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  );
}

3 个答案:

答案 0 :(得分:1)

您未在通话结束时添加方法名称。试试这个:

http://localhost:61549/api/myapi/get

答案 1 :(得分:1)

确保您可以在Global.asax Application_Start()方法中调用WebApiConfig注册。类似的东西:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

答案 2 :(得分:0)

尝试这种方法

namespace MyProject.Controllers
{
        public class MyApiController : ApiController
        {
            public IHttpActionResult Get()
            {
                var results = new List<ResultModel>
                {
                    new ResultModel() {ResultId = 1, ResultName = "Bill"},
                    new ResultModel() {ResultId = 2, ResultName = "Ted"}
                };
                return Ok(results);
            }

        }

        public class ResultModel
        {
            public int  ResultId { get; set; }
            public string ResultName { get; set; }
        }
}


Api: http://localhost:61549/api/MyApi/get

希望这有帮助。