У меня есть несколько контроллеров в моем проекте, которые имеют несколько методов Get:
public async Task<ActionResult<IEnumerable<DModel>>> Get(){}
public async Task<ActionResult<DModel>> Get(int id){}
Я пытаюсь создать соглашение, которое соответствует этим, но зависит от параметра - так, чтобы оно могло отличить.Пока у меня есть:
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(string), StatusCodes.Status400BadRequest)]
[ProducesDefaultResponseType]
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
public static void Get()
{
}
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(string), StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
[ProducesDefaultResponseType]
public static void Get(
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
int id)
{
}
Это не похоже на работу, и я получаю сообщение об ошибке при попытке запустить API:
System.ArgumentException: 'Имя метода«Get» является неоднозначным для типа соглашения «P.API.Conventions.PApiConventions».Найдено более одного метода с именем «Get».Arg_ParamName_Name '
Это показывает против app.UseMvc () при запуске.Я понимаю, что происходит, но не могу работать с логикой, чтобы заставить его правильно разрешать методы get.