在mvc应用程序中找不到资源api

时间:2018-10-11 15:35:56

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

在现有的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 }
            );
        }
    }

2 个答案:

答案 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