- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
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. В случае, если понадобятся другие подробности проекта, готов ответить на все вопросы. Прошу помочь, кому не составит труда, пожалуйста. Заранее спасибо за уделённое время.