Как предотвратить maxOccurs = "неограниченный" в файлах xsd - PullRequest
1 голос
/ 02 марта 2012

Мне не удалось выполнить сканирование безопасности.

maxOccurs = "unbounded"

Приходит в xsd на моем клиенте Silverlight для ссылки на службу для одной из моих веб-служб.1006 * Есть ли какой-либо атрибут или что-то, что я могу установить в веб-службе, чтобы предотвратить генерацию xsd таким образом?

На самом деле это WCF

1 Ответ

1 голос
/ 04 марта 2012

В WCF нет поддержки.Даже если вы выполняете реальный контракт первым и пишете контракт сообщения вручную, когда wcf генерирует классы из вас wsdl + xsd, он будет игнорировать значение maxOccurs, если оно больше 1. Поэтому, когда вы предоставляете сервис, сгенерированный контракт снова будет иметьmaxOccurs="unbounded".

Однако вы можете легко изменить это поведение, реализовав настраиваемое поведение конечной точки, реализующее IWsdlExportExtension, IEndpointBehavior интерфейсы:

  • Создание классов из контракта(wsdl + xsd)
  • Скопируйте файлы контракта в папку в проекте хоста службы
  • Добавьте поведение конечной точки в конечную точку службы
  • В классе поведения конечной точки заменитеимпортированные сгенерированные схемы с вашими реальными xsd

Таким образом, сгенерированные контракты будут включать ваши исходные схемы вместо сгенерированных.

Кроме того, вам нужно будет проверить XML-файл с вашими xsd,Потому что WCF не будет проверять ваши maxOccurs атрибуты.

...