Использование тире в параметре веб-API

У меня есть метод веб-API с множеством параметров. Параметры используются для поиска объектов в базе данных. В одном случае одно из значений параметра содержит тире (например, http://localhost/api/event/getdata/param-one/2/3/4/) Я видел здесь другие вопросы и решения по обработке тире в контроллере или действии, или даже параметре имя, но не значение параметра. Я не могу предсказать все значения, поэтому мне нужно иметь возможность обрабатывать здесь любой параметр с тире.

[AcceptVerbs("POST")]
[Route("GetData/{arg0:alpha}/{arg1:int}/{arg2:int}/{arg3:int}/")]
public async Task<Dictionary<string, object>> GetData(string arg0, int arg1, int arg2, int arg3)
{
        ...
}

person user2517133    schedule 15.05.2019    source источник


Ответы (1)


Это произошло из-за альфа-ограничения для этого первого параметра, который допускает только буквенные символы. Изменение его на что-то вроде {arg0: length (1,50)} решило проблему.

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 < / а>

person user2517133    schedule 15.05.2019