Ошибка маршрутизации атрибутов веб-API c # Asp.net 404 - PullRequest
0 голосов
/ 20 мая 2019

Я не могу понять, почему один мой атрибут маршрутизации не работает, первый метод действия работает, но не второй.

Вот мои настройки:

public class ActivMobileController : ApiController
{
    [HttpGet]
    [Route("api/ActivMobile/Impact/{token}")]
    public IHttpActionResult Impact(string token)
    {
     ...   
    }

    [HttpGet]
    [Route("api/ActivMobile/Attachments/{id}")]
    public IHttpActionResult Attachments(string id)
    {
     ...
    }
 }

здесьмой WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Reference: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
        config.EnableCors(new EnableCorsAttribute(CloudConfigurationManager.GetSetting("AllowOrigins"), "*", "*"));

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Вот URL-адрес, который я тестирую, и он выдает 404 Ошибка

http://localhost:60105/api/ActivMobile/Attachments/39E522838A652508112E9AD1E0E831C7

1 Ответ

0 голосов
/ 20 мая 2019

Вы указываете API дважды, когда он уже есть в шаблоне по умолчанию

 config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

Удалите избыточный Api / activMobile из ваших маршрутов

[Route("Impact/{token}")]
public IHttpActionResult Impact(string token)
{
 ...   
}

[HttpGet]
[Route("Attachments/{id}")]
public IHttpActionResult Attachments(string id)
{
 ...
}
...