我一直在努力使用过去一天抛出ExecutionEngineException的Web服务。我终于知道Silverlight客户端不喜欢IEnumerable<>也不是IList<>也不列出<>作为返回类型。 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; }
}
在客户端,只需创建服务引用并调用该服务即可。服务返回后抛出异常。
任何关于导致问题的原因都将受到赞赏。
答案 0 :(得分:0)
我没有官方的答案,但我注意到在SLW的RTW版本中,自动代理生成有时会对我产生影响,并且破坏数组/列表/泛型集合的传递是其中的一部分怎么了。我的解决方法 - 确实很糟糕 - 有点奇怪:我右键单击服务引用,选择“配置服务引用”,选择“在引用的程序集中重用类型”,然后查看应该使用哪些类型/程序集重新使用。最终似乎有效。
如果这不起作用,我重新启动Visual Studio,自动代理生成通常在那时起作用。
希望这有助于至少指出正确的方向。