почему мои параметры ODataACtionParameters равны нулю для POST-запроса?

#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, но клиент передает "" пустую строку, это приведет к тому, что параметры будут равны нулю.