Не удается создать временный класс (result=1) ошибку при выполнении объекта Invoke Web Services

Эта статья поможет вам обойти проблему, из-за которой при выполнении объекта Invoke Web Services появляется ошибка Не удалось создать временный класс (result=1).

Исходная версия продукта: System Center Orchestrator
Исходный номер базы знаний: 2486643

Симптомы

При выполнении объекта Invoke Web Services в Microsoft System Center Orchestrator или Opalis Integration Server в опубликованных данных сводки ошибок появляется одна или несколько из следующих ошибок:

Не удалось создать временный класс (result=1).
ошибка CS0029: не удается неявно преобразовать тип "Opalis.WebServices.DynamicProxy.CustomType" в "Opalis.WebServices.DynamicProxy.CustomType[]".
ошибка CS0030: не удается неявно преобразовать тип "Opalis.WebServices.DynamicProxy.CustomType[]" в "Opalis.WebServices.DynamicProxy.CustomType"

Причина

Известная проблема с WSDL.exe может привести к неправильному созданию прокси-класса, если массив сложного типа содержит элемент, который также является массивом сложного типа и для которого существует только один элемент.

Примечание.

WSDL.exe входит в платформа .NET Framework Майкрософт.

Обходной путь

Существует три обходных решения:

  • Класс прокси-сервера можно создать вручную с помощью WSDL.exe, а затем изменить класс прокси- сервера, в котором тип данных был создан неправильно в виде двумерного массива (например, CustomType[][]), чтобы он был одномерным массивом (например, CustomType[]).

  • Вы можете изменить тип данных на требуемом языке описания веб-служб (WSDL), чтобы в определение был включен второй необязательный элемент. Это можно сделать, добавив элемент, например следующий пример:

    <xs:element minOccurs="0" name="dummyElement" nillable="true" type="xs:string"/>

  • Вы можете изменить сложный тип в требуемом WSDL, чтобы атрибуты границ были частью сложного типа, а не частью элемента. (То есть можно переместить minOccurs атрибуты и maxOccurs в сложный тип, а затем удалить их из элемента.)