修正: 戻り値の型、または、内部セッターを持つプロパティを含む ASMX サービス メソッドの out 引数がシリアル化できませんがインストールされている.NET Framework をコンピューターに


現象


以下の事例で説明します。Microsoft.NET Framework 2.0 Service Pack 2 (SP2) を持つコンピューターがある場合や、.NET Framework 3.5 SP1 がインストールされています。プロパティを含む ASMX サービスのメソッドを使用して、プロパティには、内部 set アクセス操作子。シリアル化が失敗する可能性があります。この問題は、次のようなシナリオで発生します。
  • パブリック型 T には、パブリックな getter と、内部セッターを持つパブリック プロパティが含まれています。ソース コードの例を次にします。
    public class T{

    public <Type> <Propertyname1> { get; internal set; }

    }

  • Web サービス、戻り値の型または out を少なくとも 1 つの Web サービス メソッドの引数 T 型のオブジェクトを返します。 または、オブジェクト グラフの T を含むオブジェクトします。ソース コード例を次の例の 1 つです。
    • public T MyWebMethod(…){

      }

    • public void MyWebMethod(…, out U){

      }
      ...
      public Class U
      {
      public T <Propertyname2> { get; set; }
      }
  • 型 T または型 U は使用されません、Web サービス メソッドで非専用の引数として。

    注: メソッドの引数を 1 つ以上の場合、out 引数は出力専用ではない引数と呼ばれます。
  • 内部セッターを持つプロパティの種類は、 Enumerableまたはコレクションではありません。
  • .NET Framework 2.0 SP2 または.NET Framework 3.5 SP1 を適用する前に、Wsdl.exe ツールまたは Visual Studio の追加の Web 参照機能を使用して、前述の Web サービスへのプロキシ コードが生成されます。
  • Web サービスとクライアントを展開した後は、.NET Framework 2.0 SP2 または.NET Framework 3.5 SP1 を適用します。
このシナリオでは、戻り値の型、または前述の Web サービス メソッドの out 引数はシリアル化できません。この Web サービス メソッドは、型 T のオブジェクトまたはそのオブジェクト グラフに T を含むオブジェクトです。

注: 現在、.NET Framework 2.0 SP2 用の個別のパッケージではありません。.NET Framework 2.0 SP2 は.NET Framework 3.5 sp1 では、パッケージに含まれます。

解決策


修正プログラムの置き換えに関する情報

KB952883 に対応する修正プログラムは、KB976814、KB952883 に含まれていたすべての修正プログラムが含まれている修正プログラムに置き換えられています。KB952883 で説明した問題を修正するのに修正プログラム KB976814 を使用してください。の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします:
976814を修正する:.NET Framework 3.5 では、サービス メタデータから ServiceModel メタデータ ユーティリティ ツールで生成された WCF クライアント プロキシを使用すると A System.InvalidOperationException 例外が発生します。

状況


マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。

関連情報


ソフトウェア更新プログラムの用語の詳細については、次の文書番号をクリックして、マイクロソフト サポート技術情報の資料を参照してください。
824684マイクロソフトのソフトウェア更新プログラムを記述するために使用される一般的な用語説明