Проблема с веб-API - PullRequest
0 голосов
/ 29 мая 2018

Я работаю с ASP.Net web API. Я создал папку с именем api в папке контроллеров, а затем создал контроллер Api в этой папке api.В административном контроллере я просто поместил следующий код, чтобы проверить, работает ли API или нет.

public class AdminController : ApiController
{
    DBEntities _context;
    public AdminController()
    {
        _context = new DBEntities();
    }
    [HttpGet]
    public IEnumerable<string> GetUsers()
    {

        return new string[] { "Muhammad","Ali"};
    }
}

Затем из браузера я звоню http://localhost:57368/api/admin, но это дает мне "«Не удается найти ресурс» с кодом ошибки http 404. По крайней мере, он должен возвращать результат JSON, но вместо этого выдает эту ошибку.Любая помощь высоко ценится.И когда я иду на вкладку сети в Chrome, он показывает следующие детали запроса: Click to view error details

Ответы [ 4 ]

0 голосов
/ 29 мая 2018
protected void Application_Start()
    {
        GlobalConfiguration.Configure(config =>
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        });
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
   }

Ваш global.asax.cs должен выглядеть следующим образом

0 голосов
/ 29 мая 2018

вы должны использовать атрибуты 'RoutePrefix' и 'Route'.API должен знать, как перемещать входящий запрос к действию.эти атрибуты помогут вам.не забудьте добавить это пространство имен 'using System.Web.Http'.

using System.Web.Http

[RoutePrefix("api/admin")]
public class AdminController : ApiController
{
    DBEntities _context;
    public AdminController()
    {
         _context = new DBEntities();
    }
    [HttpGet]
    [Route("GetUsers")]
    public IEnumerable<string> GetUsers()
    {

        return new string[] { "Muhammad","Ali"};
    }
}
0 голосов
/ 29 мая 2018

В Global.asax я зарегистрировал Api, используя GlobalConfiguration.Configure (WebApiConfig.Register) , но проблема заключалась в том, что я поместил его внизу, из-за чего MVC имел преимущество, а когда я вызвал api / admin -дал ошибку, сказав, что ресурс не найден, потому что MVC был в действии.Я добавил этот GlobalConfiguration.Configure (WebApiConfig.Register) вверху и в ApplicationStart () в Gloabl.asax, и он работал нормально.

0 голосов
/ 29 мая 2018
[RoutePrefix("api/admin")]
public class AdminController : ApiController
{
    DBEntities _context;
    public AdminController()
    {
        _context = new DBEntities();
    }
    [Route("GetUsers")]
    [HttpGet]
    public IEnumerable<string> GetUsers()
    {

        return new string[] { "Muhammad","Ali"};
    }
}

URL: http://localhost:57368/api/admin/GetUsers

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