代码之家  ›  专栏  ›  技术社区  ›  Neo

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

  •  1
  • Neo  · 技术社区  · 6 年前

    在现有的MVC应用程序中,我添加了api支持。 添加了api控制器,但当我点击url时它显示错误-

    找不到资源。

    https://localhost:44316/api/getdata
    https://localhost:44316/Test/api/getdata
    

    测试控制器.cs

    public class TestController : ApiController
        {
            [HttpGet]
            [Route("api/getdata")]
            public IEnumerable<string> GetData()
            {
                return new string[] { "value1", "value2" };
            }
        }
    

    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 回复  |  直到 6 年前
        1
  •  1
  •   CodingYoshi    6 年前

    如果这是一个现有的MVC应用程序,那么您需要注册webapi路由。您需要将这行代码添加到 全球.asax.cs 在中注册web api路由 Application_Start

    GlobalConfiguration.Configure(WebApiConfig.Register);
    

    一旦你这样做了,你的网址应该然后工作。

        2
  •  -1
  •   bucyDev    6 年前

    试试这个:

    [Route("api/[controller]")]
    public class TestController : ApiController
    {
        [HttpGet]
        public IEnumerable<string> GetData()
        {
            return new string[] { "value1", "value2" };
        }
    }
    

    http://localhost:XXXX/api/test .