Шаблон маршрута не может начинаться с символа "/" или> "~" и не может содержать "?" персонаж

Я получаю исключение со следующим атрибутом маршрута:

[Route("{id}?action=decline")]

Исключение:

Исключение типа "System.ArgumentException" произошло в System.Web.Http.dll, но не было обработано в коде пользователя

Дополнительная информация: шаблон маршрута не может начинаться с символа "/" или "~" и не может содержать "?" персонаж.

Почему это не разрешено?

1 ответ

Решение

Я думаю, что это не разрешено, потому что строка запроса не является частью URI-Path. (См. RFC3986 Раздел 3.3 Путь, он не включает часть запроса)
Но мне не трудно доказать, что: Возможно, эти ссылки помогут вам:

Маршрутизация на основе имени параметра строки запроса
QueryString с MVC 5 AttributeRouting в веб-API 2
Маршрутизация атрибутов в ASP.NET Web API 2

Вы можете сделать это, и вы будете иметь доступ к обоим id а также action:

[Route("{id}")]

public IHttpActionResult YourMethod([FromUri] string action)
Другие вопросы по тегам