ASP.NET - System.ArgumentException: "Шаблон маршрута не может начинаться с символов "/" и "~" или содержать символ "?". Имя параметра: routeTemplate"

Работаю над веб-апи для личного проекта. Возникла ошибка с настройкой, а как решить - не понимаю, ибо веб-апи на асп реализую впервые. Возникает следующее исключение при запуске апи:

System.ArgumentException: "Шаблон маршрута не может начинаться с символов "/" и "~" или содержать символ "?". Имя параметра: routeTemplate"

Полный код:

AccountHeadApiController.cs

using System;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Cors;
using Domain.Models;
using Domain.RepositoryAccess;

namespace API.Controllers
{
    [RoutePrefix("api/account-head")]
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class AccountHeadApiController : ApiController
    {
        private readonly IAccountHeadRepository _repository;

        public AccountHeadApiController(IAccountHeadRepository repository)
        {
            _repository = repository ?? throw new ArgumentNullException(nameof(repository));
        }

        [HttpGet, Route("")]
        public async Task<IHttpActionResult> GetAll()
        {
            try
            {
                var accountHeads = await _repository.GetAllAsync();
                return Ok(accountHeads);
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }
        }

        [HttpGet, Route("{id:int}")]
        public async Task<IHttpActionResult> GetById(int id)
        {
            try
            {
                var accountHead = await _repository.GetByIdAsync(id);
                if (accountHead == null) return NotFound();
                return Ok(accountHead);
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }
        }

        [HttpPost, Route("create")]
        public async Task<IHttpActionResult> Create([FromBody] AccountHead model)
        {
            if (model == null) return BadRequest("Invalid data.");

            try
            {
                await _repository.AddAsync(model);
                return Created(Request.RequestUri + "/" + model.AccountHeadID, model);
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }
        }

        [HttpPut, Route("update/{id:int}")]
        public async Task<IHttpActionResult> Update(int id, [FromBody] AccountHead model)
        {
            if (model == null || id != model.AccountHeadID) return BadRequest("Invalid data.");

            try
            {
                await _repository.UpdateAsync(model);
                return Ok();
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }
        }
    }
}

WebApiConfig.cs

using System.Web.Http;

namespace API
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.EnableCors();

            config.MapHttpAttributeRoutes();

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

Global.asax.cs

using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Unity;

namespace API
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        private static IUnityContainer _container;

        protected void Application_Start()
        {
            _container = new UnityContainer();

            Helpers.UnityConfig.RegisterComponents(_container);
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

Ошибка возникает при конфигурации веб-конфига в GlobalConfiguration. В случае, если понадобятся другие подробности проекта, готов ответить на все вопросы. Прошу помочь, кому не составит труда, пожалуйста. Заранее спасибо за уделённое время.


Ответы (0 шт):