У меня есть приложение asp.net, которое говорит о балансировке нагрузки служб wcf (iis hosted, в пуле приложений, запущенном под учетной записью, настроенной как servicePrincipalName и т. Д.). Службы wcf возвращают несколько пользовательских сбоев, все они определены с помощью FaultContract (typeof (x), ProtectionLevel = ProtectionLevel.None) - эти службы не доступны для общественности. Клиент использует сгенерированные классы 'service reference' для доступа к сервисам.
Это сработало нормально, но теперь, с использованием новейшей кодовой базы, мы получаем «Первичная подпись должна быть зашифрована». исключения на клиенте, когда служба возвращает одну из этих ошибок. Сервисный код и конфигурация неизменны (по крайней мере, унаследованные части, которые генерируют неисправности). Сгенерированный код ссылки на стороне клиента выглядит наиболее измененным (его часто удаляют и воссоздают).
Конфигурация безопасности не изменяется более года. Все обновления довольно актуальные. Мы проверили это в трех средах, и как только мы развернем новую кодовую базу, ошибки начинают генерировать исключения. Похоже, что это должно быть в сгенерированных классах, но они генерируются Visual Studio, поэтому это очень сбивает с толку.
Звучит ли это кому-нибудь знакомо? Есть предложения?
Обновление: удаление атрибута ProtectionLevel и предоставление ему значения по умолчанию делает проблему "исчезающей", но мне любопытно, почему указание None приводит к сбою. Возможно, это конфликтует с уровнем по умолчанию контракта на эксплуатацию или контракта на обслуживание, но эти значения не изменились в прошлом году, поэтому это не объясняет, почему то, что сработало сейчас, не меняется.
Обновление: для чего это стоит, это изменение в генерации кода произошло между 2.0.50727.3053 и 2.0.50727.3082 (согласно комментарию к версии времени исполнения в сгенерированном коде).