過去 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; }
}
クライアント側では、サービス参照を作成してサービスを呼び出すだけです。サービスが戻った後、例外がスローされます。
問題の原因について何か考えをいただければ幸いです。