ресурс API не найден в приложении MVC - PullRequest
0 голосов
/ 11 октября 2018

В существующем приложении 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 голосов
/ 11 октября 2018

Атрибут 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.

0 голосов
/ 11 октября 2018

Если это существующее приложение MVC, то вам нужно зарегистрировать свои маршруты веб-API.Вам необходимо добавить эту строку кода в Global.asax.cs , чтобы зарегистрировать маршруты веб-API в методе Application_Start:

GlobalConfiguration.Configure(WebApiConfig.Register);

. После этого ваши URL-адреса должныработа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...