.NET Core Web Api: вызов localhost возвращает 404 - PullRequest
0 голосов
/ 05 февраля 2019

У меня .NET Core Web Api , и когда я запускаю проект с IIS Express, я получаю 404, когда я использую Postman и вызываю веб-интерфейс Api-localhost (без маршрута), я получаю500. Но в моем случае я получаю 404, с или без маршрута.В файле launch.settings я получил:

  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:63793",
      "sslPort": 0
    }

Почему я получаю 404, когда я звоню "http://localhost:63793"?

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Теперь, когда вы предоставили контроллер, я полагаю, что вы просто получаете неправильный URL.

[Route("graph/[controller]")]
public class GraphController : ControllerBase

Это означает, что вам, вероятно, следует получить доступ к graph/graph/users

Контроллер здесь ["graph/[controller"] получит то же имя, что и имя вашего контроллера, например, График Контроллер.Простым элегантным решением было бы переименовать первую часть в api/[controller] ->, тогда URL будет baseurl:port/api/graph/route или в вашем случае: localhost:63793/api/graph/users

Попробуйте.

0 голосов
/ 05 февраля 2019

Почему я получаю 404, когда звоню "http://localhost:63793"?

Кажется, потому что у вас нет ресурса по этому адресу.

localhost: 63793 / graph / Users

Согласно вашим атрибутам маршрутов [Route("graph/[controller]")] и [Route("Users")] ваш ресурс расположен на localhost:63793/graph/graph/users, поскольку у вас есть префикс graph/, а ваш контроллер называется GraphController. Обычно api url имеют префикс api/.

0 голосов
/ 05 февраля 2019

    [Route("graph/[controller]")]
    public class GraphController : ControllerBase
    {
        /// <summary>
        /// Retrieve configured AAD Users
        /// </summary>
        /// <returns>An awaitable <seealso cref="Task{ICollection{AADUser}}>}"/>that contains a mapping of Ids of Users and their mapped Groups</returns>
        [Route("Users")]
        [HttpGet]
        public async Task<IActionResult> GetUsersAsync()
        {
            ICollection<AADUser> response;

            try
            {
                response = await graphBC.GetUsersAsync().ConfigureAwait(false);

                if (response == null || response.Count < 1)
                {
                    return NotFound();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return Ok(response);
        } 

когда я вызываю его в оболочке, я получаю ответ:

curl -v http://localhost:63793/graph/Users
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 63793 (#0)
> GET /graph/Users HTTP/1.1
> Host: localhost:63793
> User-Agent: curl/7.55.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: Kestrel
< X-SourceFiles: =?UTF-8?B?Qzpcd29ya3NwYWNlXEJFLWFhZC1uZXRjb3JlXExFT05JU21hcnRDYWJsZS5BQURcTEVPTklTbWFydENhYmxlLkFBRC5Db3JlXGdyYXBoXFVzZXJz?=
< X-Powered-By: ASP.NET
< Date: Tue, 05 Feb 2019 09:24:35 GMT
< Content-Length: 0
<
* Connection #0 to host localhost left intact
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...