0

過去 1 日間、ExecutionEngineException をスローする Web サービスに苦労しています。最終的に、Silverlight クライアントは戻り値の型として IEnumerable<> も IList<> も List<> も好まないことがわかりました。ただし、MyObject[] は問題ありません。

サンプルソリューションでそれを再現することができました:

サービスの説明:

    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        IEnumerable<Person> SomeStuff();
    }

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service : IService
{
        public IEnumerable<Person> SomeStuff()
        {
            return new Person[] { new Person { Name = "some person", ID = 42 } };
        }
}

    [DataContract]
    public class Person
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public int ID { get; set; }
    }

クライアント側では、サービス参照を作成してサービスを呼び出すだけです。サービスが戻った後、例外がスローされます。

問題の原因について何か考えをいただければ幸いです。

4

1 に答える 1

0

公式の回答はありませんが、SL 3.0のRTWバージョンでは、自動プロキシ生成が時々私を悩ませ、配列/リスト/汎用コレクションの受け渡しを台無しにすることが起こることの一部であることに気づきました。私の回避策(確かにひどいです)はちょっと奇妙です:サービス参照を右クリックし、「サービス参照の構成」を選択し、「参照されたアセンブリでタイプを再利用する」を選択してから、どのタイプ/アセンブリを使用するかをいじくりまわします再利用。最終的には機能するようです。

それが機能しない場合は、Visual Studioを再起動すると、その時点で自動プロキシ生成が機能することがよくあります。

これが少なくともあなたを正しい方向に向けるのに役立つことを願っています。

于 2009-07-17T03:22:55.243 に答える