Http Duplex Binding Web服务调用上的ExecutionEngineException

时间:2009-07-16 13:24:18

标签: silverlight silverlight-3.0 executionengineexception

我一直在努力使用过去一天抛出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; }
    }

在客户端,只需创建服务引用并调用该服务即可。服务返回后抛出异常。

任何关于导致问题的原因都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我没有官方的答案,但我注意到在SLW的RTW版本中,自动代理生成有时会对我产生影响,并且破坏数组/列表/泛型集合的传递是其中的一部分怎么了。我的解决方法 - 确实很糟糕 - 有点奇怪:我右键单击服务引用,选择“配置服务引用”,选择“在引用的程序集中重用类型”,然后查看应该使用哪些类型/程序集重新使用。最终似乎有效。

如果这不起作用,我重新启动Visual Studio,自动代理生成通常在那时起作用。

希望这有助于至少指出正确的方向。