我正在开发一个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 }
);
}
答案 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
希望这有帮助。