Как часть вызова WCF как службы REST, одно из свойств словаря типов не сериализуется - PullRequest
0 голосов
/ 12 июня 2019

Я выставил вызов WCF как Служба Отдыха; Я могу вызвать этот конкретный веб-сервис со сложным объектом. Но одно свойство, имеющее тип Dictionary, не сериализуется и становится пустым, когда дело доходит до WCF. Я предоставил более подробную информацию в коде.

InFieldValuePair является диктонарным

JSON Запрос:

{  
   "Requests":[  
      {  
         "AppRuleGroup":{  
            "AppId":0,
            "AppName":"XXX",
            "SubGroupId":0,
            "SubGroupName":"Corporates - Investment Grade",
            "GroupId":0,
            "GroupName":"Workflow",
            "ModuleId":0,
            "ModuleName":"Trading",
            "RulesLastUpdatedBy":null,
            "EvalRules":[  

            ]
         },
         "InputRequests":[  
            {  
               "Guid":"8592080a-6236-4b37-91b5-48c8a988950b",
               "InFieldValuePair":{  
                  "CurrentStatus":"Counter1",
                  "Direction":"Out"
               }
            }
         ],
         "Guid":"a0f0fba0-bf3b-4d3d-adc8-416b5448b3df"
      }
   ]
}

О

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Task<List<RuleEvaluationResponse2>> Evaluate2(List<RuleEvaluationRequest2> Requests);

Ожидаемый результат: объект словаря должен быть заполнен

1 Ответ

0 голосов
/ 14 июня 2019

Сначала убедитесь, что свойство объекта было оформлено с помощью [DataContract] / [DataMember] .
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data-contracts
Кроме того, если T содержал другой объект,чтобы обеспечить правильную работу сериализации и десериализации, мы должны рассмотреть возможность использования атрибута [KnownType].
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/data-contract-known-types
Мы могли бы использовать интерфейс IExtensibleDataObject для обработки ситуаций, когда контракты данных на сервере и клиенте несовместимы, а несериализованные членыправильно сериализовано.
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.serialization.iextensibledataobject?view=netframework-4.8
Наконец, когда элементов данных слишком много.Пожалуйста, рассмотрите возможность использования свойства MaxItemsInObjectGraph.
https://thinksimpleshirin.wordpress.com/2011/12/06/increasing-maxitemsinobjectgraph-wcf/
Не стесняйтесь сообщить мне, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...