Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将web服务引用添加到控制台应用程序_C#_Visual Studio_Wcf_Web Services_Console - Fatal编程技术网

C# 将web服务引用添加到控制台应用程序

C# 将web服务引用添加到控制台应用程序,c#,visual-studio,wcf,web-services,console,C#,Visual Studio,Wcf,Web Services,Console,我正在控制台应用程序中创建一个简单的web服务。(个人服务) 下面是我的程序.cs 我正在尝试向其他控制台应用程序(PersonClient)添加服务引用 我该怎么做? 我尝试通过右键单击、添加服务引用、指向引用等方式添加它。。。 但它不起作用 [DataContract] public class Person { [DataMember] public string FirstName { get

我正在控制台应用程序中创建一个简单的web服务。(个人服务) 下面是我的程序.cs

我正在尝试向其他控制台应用程序(PersonClient)添加服务引用 我该怎么做? 我尝试通过右键单击、添加服务引用、指向引用等方式添加它。。。 但它不起作用

        [DataContract]
        public class Person
        {
            [DataMember]
            public string FirstName { get; set; }

            [DataMember]
            public string LastName { get; set; }

        }

        [ServiceContract]
        public interface IPersonLookup
        {
            [OperationContract]
            Person GetPerson(int identifier);
        }

        public class PersonService : IPersonLookup
        {
            public PersonService()
            {
            }
            public Person GetPerson(int identifier)
            {
                Person p = new Person();
                p.FirstName="Jane";
                p.LastName="Doe";
                return p;
            }



        }


        class Program
        {
            static void Main(string[] args)
            {
                using (ServiceHost host = new ServiceHost(typeof(PersonService)))
                {
                    WSHttpBinding binding = new WSHttpBinding();
                    host.AddServiceEndpoint(typeof(IPersonLookup), binding, "http://localhost:9090/PersonService");
                    host.Open();
                    Console.WriteLine("Listening....");
                    Console.ReadLine();
                }


            }
        }

您需要阅读有关WCF MEX端点的信息。这是一个。

您有两个控制台EXE,其中一个运行
ServiceHost
-正确吗?在不调试的情况下运行服务器控制台;然后在IDE中将WCF引用添加到url。它应该可以工作,但是当您查询mex时,它需要服务器(您的第二个控制台exe)正在运行。

添加webservice引用时,您为服务定义了名称空间和“类名”。您必须添加名称空间引用(“using FooNameSpace;”),或使用服务的完全限定类名(“FooNameSpace.BarClass ws=new FooNamesape.BarClass()”

解决方案:

  • 使用visual studio创建控制台应用程序
  • 右键单击项目并单击“添加服务引用…”
  • 在窗口的底部,您将看到“高级”按钮
  • 单击按钮,它将打开“服务参考设置”窗口。它在底部有一个叫做“添加Web引用”的按钮
    • 创建一个控制台应用程序
    • 右键单击引用,然后单击添加服务 参考资料
    • 单击底部的“高级”按钮
    • 在新窗口中,单击添加Web引用


    还没有人提到,在使用“添加服务引用”之前,您需要做几件事

  • 使用Visual Studio 2019安装程序工具修改现有安装
  • 检查“.NET桌面开发工作负载”。(这将添加第二种类型的控制台应用程序。)
  • 现在启动VS2019,然后使用以下命令创建一个项目:控制台应用程序(.NET Framework)重要提示:不要为.NET Core选择一个,否则它将没有“添加服务引用”选项
  • 现在转到主菜单栏并选择Project->Add Service Reference。现在您可以添加您的引用

  • 快乐编码

    嗨,马克,我照你说的做了,我把地址指向:它给出了一个错误:下载“”时出错。请求失败,HTTP状态为400:请求错误。元数据包含无法解析的引用:“”。元数据包含无法解析的引用:“”。如果服务是在当前解决方案中定义的,请尝试构建解决方案并再次添加服务引用。当服务运行时,请尝试在web浏览器中浏览到服务uri。它可能会为您提供服务页面,告诉您如何设置mex;但是,我记不得了。当我指向服务运行时,它给出了一个找不到的页面。链接不再工作了。请更新你的答案。因为实际答案中的链接已经不起作用了,但我试过了,对我来说效果很好。谢谢@raklos将此解决方案标记为答案。