Свойство Readonly в WCF DataContract неожиданно дает исключения для одного клиента - PullRequest
0 голосов
/ 23 ноября 2011

Недавно у нас возникла проблема с нашим сервисом WCF.Вот как это настроено:

  • Служба имеет необходимые ServiceContracts и DataContracts
  • В DataContract есть свойство только для чтения (см. Код ниже)
  • Клиент использует ту же DLL с Service- и DataContracts (поэтому WSDL отсутствует)

Это свойство только для чтения:

Dictionary<string, string> _list;

[DataMember]
public IDictionary<string, string> Fields
{
    get
    {
        if (_list == null)
            _list = new Dictionary<string, string>();
        return _list;
    }
}

Клиент легко "устанавливает" это свойство с помощьюиспользуя метод Fields.Add().

Недавно мы получили исключение, что у Fields должен быть установщик.Я читал это в нескольких других местах, но это странная вещь:

  • Он работал нормально на клиенте один день, не больше в другой день
  • Он отлично работает надругие клиенты, и работает нормально в течение 1-2 лет

Так почему это внезапное изменение?Может ли это быть другой .NET Framework (клиент мог обновиться за одну ночь)?Действительно ли свойства readonly не поддерживаются в WCF, потому что на других клиентах это работает нормально?

1 Ответ

0 голосов
/ 19 апреля 2012

У меня больше нет новостей об этом, и я больше не участвую в этом проекте, поэтому вот несколько советов по решению этой проблемы, если вы столкнетесь с той же проблемой:

  • Код работаетв режиме Частичное доверие
  • Установлена ​​неверная версия .NET Framework (необходим .NET 3.0 SP1)
  • Не использовать сервисные ссылки

Понятно, что в моем случае проблема заключалась в одном конкретном клиенте.Таким образом, первые два варианта возможны.

...