#c# #asp.net #.net #odata
#c# #asp.net #.net #odata
Вопрос:
Я новичок в разработке .net. Я пытаюсь отправить запрос веб-сервису.
Реализация веб-сервиса
[HttpPost]
public async Task<ICollection<BoConsolidatedData>> GetTesDatas(ODataActionParameters actionParameters)
{
try
{
var reqId = (int)actionParameters["ReqId"];
Я использую Chrome Advance REST client, где я устанавливаю тип содержимого в application / json
Я отправил параметр в теле как JSOn
{«ReqID»: 9481}
Когда я отлаживаю службу, мои параметры actionparameters всегда равны нулю. Что здесь не так?
Ответ №1:
Вы зарегистрировали эту функцию? Код, вероятно, должен выглядеть примерно так:
var builder = new ODataConventionModelBuilder();
builder.Function("GetTesDatas")
.ReturnsCollection<BoConsolidatedData>()
.Parameter<int>("ReqId")
.Required();
Вы можете сделать это с помощью того же modelbuilder, который вы используете для регистрации других ваших ресурсов OData.
Комментарии:
1. Спасибо. Все функции зарегистрированы в конфигурации WebAPI. Другие функции работают. Только эта операция не работает. Мой запрос достигает конечной точки. Почему я получаю значение ‘actionParameters’ null? Я подозреваю, что мой запрос POST неверен?
2. Я нашел причину, я также передал параметр DateTime, который я не добавил в приведенный выше пример фрагмента кода, который содержал неправильный формат. ИТАК, перевод json был неправильным
Ответ №2:
Это также может произойти, если вы немного перепутаете свои параметры. Например, если у вас есть обнуляемый Guid?
параметр в WebApiConfig, но клиент передает ""
пустую строку, это приведет к тому, что параметры будут равны нулю.