我正在控制台应用程序中创建一个简单的 Web 服务。 (人员服务) 这是我的 Program.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 端点的信息。这是一篇博客文章可能会有所帮助(存档版本)。
你有两个控制台执行程序,其中一个运行
ServiceHost
- 这是正确的吗?运行服务器控制台,无需调试;然后在 IDE 中添加对 url 的 WCF 引用。它应该可以工作,但是当您查询 mex 时,它需要服务器(您的第二个控制台 exe)运行。
添加 Web 服务引用时,您定义了服务的命名空间和“类名称”。您必须添加命名空间引用(“using FooNameSpace;”)或使用服务的完全限定类名(“FooNameSpace.BarClass ws = new FooNameSapce.BarClass()”);
还没有人提到您需要做一些事情才能使用“添加服务引用”。
编码快乐!