Web サービスの呼び出しオブジェクトの実行時に一時クラス (result=1) エラーを生成できません

この記事は、Web サービスの呼び出しオブジェクトを実行するときに 一時クラスを生成できない (result=1) エラーが発生する問題を回避するのに役立ちます。

元の製品バージョン: System Center Orchestrator
元の KB 番号: 2486643

現象

Microsoft System Center Orchestrator または Opalis Integration Server で Invoke Web Services オブジェクトを実行すると、 エラー概要テキスト の公開データに次の 1 つ以上のエラーが表示されます。

一時クラス (result=1) を生成できません。
エラー CS0029: 型 'Opalis.WebServices.DynamicProxy.CustomType' を 'Opalis.WebServices.DynamicProxy.CustomType[]' に暗黙的に変換できません
エラー CS0030: 型 'Opalis.WebServices.DynamicProxy.CustomType[]' を 'Opalis.WebServices.DynamicProxy.CustomType' に暗黙的に変換できません

原因

WSDL.exe に関する既知の問題により、複合型の配列に複合型の配列でもあり、1 つの要素のみが存在する要素が含まれている場合、プロキシ クラスが正しく生成されない可能性があります。

注:

WSDL.exe は Microsoft .NET Frameworkに含まれています。

回避策

使用可能な回避策は 3 つあります。

  • WSDL.exe を使用してプロキシ クラスを手動で生成し、データ型が不適切に 2 次元配列として作成されたプロキシ クラス (たとえば) CustomType[][]を 1 次元配列 (など CustomType[]) に変更できます。

  • 目的の Web サービス記述言語 (WSDL) のデータ型を変更して、2 番目の省略可能な要素を定義に含めることができます。 これを行うには、次の例のような要素を追加します。

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

  • 境界属性が要素の一部ではなく複合型の一部になるように、目的の WSDL の複合型を変更できます。 (つまり、 属性と maxOccurs 属性を複合型に移動minOccursし、要素から削除できます)。