Ваш веб-метод не возвращает никаких данных.
Вместо метода, который ничего не возвращает, измените сигнатуру метода на
public async Task<IActionResult> GetPolicy( int id )
Как только вы это сделаете, компилятор будет ожидать, что этот метод вернет некоторые данные.
Я полагаю, что хранимый процесс возвращает некоторые данные, поэтому вам придется их где-то поместить. После этого вы можете вернуть значения, используя
return Ok(thedata);
Проверьте, например, метод Ok .
Если что-то пошло не так, вы не должны возвращать Ok offcourse, но другой код статуса Http, который указывает, что пошло не так.
Это заставляет меня сказать, что функции в службе REST всегда должны возвращать правильный код состояния HTTP. Следовательно, все ваши методы REST должны возвращать IActionResult или Task, а не только извлекаемые данные
Изменить после редактирования вопроса
Метод ExecuteReader () возвращает класс, который реализует IDataReader. Очевидно, неправильно возвращать устройство чтения данных потребителю вашего веб-сервиса.
Вместо этого вам придется использовать IDataReader для чтения данных и использовать эти данные для заполнения какой-то модели, которую вы можете использовать для возврата потребителю вашей услуги.
List<SomeClass> result = new List<SomeClass>();
using (var reader = await command.ExecuteReaderAsync())
{
while( reader.Read() )
{
result.Add(new SomeClass(dr.GetInt32(0), dr.GetString(1));
}
}
return Ok(result);
Кроме того, я советую вам не форматировать данные самостоятельно в json, xml или что-либо еще. Пусть ASP.NET справится с этим за вас. ASP.NET будет сериализовать результаты в соответствующий формат на основе значения accept-header полученного запроса.