在现有的MVC应用程序中,我添加了api支持。 添加了api控制器,但是当我点击url时显示错误-
找不到资源。
我尝试了url-
https://localhost:44316/api/getdata
https://localhost:44316/Test/api/getdata
TestController.cs
public class TestController : ApiController
{
[HttpGet]
[Route("api/getdata")]
public IEnumerable<string> GetData()
{
return new string[] { "value1", "value2" };
}
}
WebApiConfig.cs
public static class WebApiConfig
{
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 class RouteConfig
{
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)
如果这是现有的MVC应用程序,则需要注册Web api路由。您需要将以下代码行添加到 Global.asax.cs 中,以通过Application_Start
方法注册您的Web api路由:
GlobalConfiguration.Configure(WebApiConfig.Register);
执行完此操作后,您的网址就可以正常工作。
答案 1 :(得分:-1)
Route属性放置在错误的位置,它应该装饰Controller类。
尝试一下:
[Route("api/[controller]")]
public class TestController : ApiController
{
[HttpGet]
public IEnumerable<string> GetData()
{
return new string[] { "value1", "value2" };
}
}
并致电Get http://localhost:XXXX/api/test。