0

在过去的一天里,我一直在为一个抛出 ExecutionEngineException 的网络服务而苦苦挣扎。我终于弄清楚 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

我没有正式的答案,但我注意到在 RTW 版本的 SL 3.0 中,自动代理生成有时会对我产生影响,并且搞砸数组/列表/通用集合的传递是发生的一部分。我的解决方法 - 诚然很糟糕 - 有点奇怪:我右键单击服务引用,选择“配置服务引用”,选择“在引用的程序集中重用类型”,然后搞砸应该使用哪些类型/程序集重复使用。最终它似乎起作用了。

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

希望这至少可以帮助您指出正确的方向。

于 2009-07-17T03:22:55.243 回答