Контроллер API, добавленный в веб-приложение ASP.NET MVC, похоже, не работает - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть веб-приложение ASP.NET MVC, к которому я пытаюсь добавить контроллер API, чтобы я мог выполнять внешние вызовы AJAX с помощью jQuery.

Я видел несколько сообщений о переполнении стекао том, как успешно добавить контроллер API в проект MVC, и хотя я следовал инструкциям и пытался избежать распространенных проблем (я добавил необходимые зависимости API и убедился, что мои маршруты API инициализируются до того, как маршруты MVC в моемglobal.asax.cs)

Мой контроллер API:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace mywebsite.net.Controllers
{
    public class WebAPIController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}

Мой WebApi.config:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace mywebsite.net
{
    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 }
            );
        }
    }
}

Мой Global.asax.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.Http;

namespace mywebsite.net
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();         
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            GlobalConfiguration.Configure(WebApiConfig.Register);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);          
        }
    }
}

Когда я пытаюсь отправить запрос GET, который, по моему мнению, должен вернуть информацию (в данном случае что-то вроде localhost: 12345 / api / WebAPI), ничего не происходит. Клиент браузера / http просто зависает при загрузке.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

Оказывается, API-контроллер обслуживался на другом порту. -.-

0 голосов
/ 09 ноября 2019

Попробуйте поставить [HttpGet] выше public IEnumerable<string> Get()

...