添加返回数组或列表的方法后,无法更新WCF服务引用

时间:2015-03-23 19:59:45

标签: c# asp.net web-services wcf

我正在尝试测试WCF Web服务,并且在引入复杂的返回类型时遇到问题。我试图保持这个简单的开始,并验证我可以在Web服务和客户端之间传递数据。我创建了以下文件:MyService.svc,MyService.cs和IMyService.cs。这是在ASP.NET C#中完成的。

MyService.cs如下所示:

    public class MyService : IMyService
    {
        public void DoWork()
        {
        }

        public bool BoolTest()
        {
            return false;
        }

        public string StrTest(string input)
        {
            return input;
        }
    }

IMyService.cs看起来像这样:

    [ServiceContract]
    public interface IMyService{
        [OperationContract]
        void DoWork();

        [OperationContract]
        bool BoolTest();

        [OperationContract]
        string StrTest(string input);

    }

我有一个控制台应用程序,我使用"服务参考"连接到上面的服务。当我使用上面显示的代码时,所有内容都可以正常链接,我可以调用Web服务提供的功能。

当我尝试返回更复杂的内容(如数组,列表或自定义对象)时,会出现问题。使用其中一种返回类型向Web Service添加函数后,尝试更新控制台应用程序中的服务引用,引用无法更新并丢失。

这是MyService.cs,其中包含导致失败的其他方法:

        public class MyService : IMyService
        {
            public void DoWork()
            {
            }

            public bool BoolTest()
            {
                return false;
            }

            public string StrTest(string input)
            {
                return input;
            }

            public string [] StrArrTest()
            {
                string[] s = new[] { "test", "test2" };
                return s;
            }
        }

以下是IMyService.cs的副本,其中添加了导致错误的附加方法:

        [ServiceContract]
        public interface IMyService{
            [OperationContract]
            void DoWork();

            [OperationContract]
            bool BoolTest();

            [OperationContract]
            string StrTest(string input);

            [OperationContract]
            string [] StrArrTest();

        }

如果我使用List<string>作为返回类型或MyObject作为返回类型,它也会失败。 我猜测需要进行某种序列化,但我很难确切地追踪到我需要做的事情。

可能有用的其他信息......客户端和主机在同一台机器上运行。当我在网络浏览器中访问http://localhost/MyService.svc时,没有显示任何错误。当我访问http://localhost/MyService.svc?wsdl时,会出现一个下降大小的xml文档。

任何人都可以帮忙解释我需要做什么,以便我可以在Web服务中返回数组和对象列表吗?

我发现了类似的问题,why does my silverlight reference to my wcf service blow up when I add a method to the wcf service that returns a generic list,但它适用于我没有使用的SilverLight。我看了一下帖子中提到的Reference.cs文件,当一切正常时,它会填充一堆东西。如果未正确更新引用(在添加返回数组的方法之后),则Reference.cs文件为空,但有关正在自动生成的文件的注释除外。

0 个答案:

没有答案