WCF主机应用程序通过添加服务引用?

时间:2012-02-17 10:23:59

标签: c# wcf

我创建了一个带有一些端点的WCF服务(带有mex端点)。 如果我现在创建一个控制台主机,并把它放在我的主:

 ServiceHost host = new ServiceHost(typeof(HelloWorld));

 host.Open();

 Console.WriteLine("The service is ready at!");
 foreach (ServiceEndpoint se in host.Description.Endpoints)
          Console.WriteLine(se.Address.ToString());
      Console.WriteLine("Press <Enter> to stop the service.");
 Console.ReadLine();

// Close the ServiceHost.
host.Close();

是否可以通过添加服务引用在主机端生成app.config,或者我是否需要创建应用程序配置我自己并使其类似于wcf服务端点?

接下来,局域网中的其他一些计算机如何才能访问此主机?

(PS,这意味着什么:服务可能包含一个mex端点,它获取服务的ABC并返回WSDL。(现在不可理解的部分)获得WSDL后,会生成两个工件:项目语言中的代理类和app.config文件。代理类镜像端点操作的签名,以便客户端代码可以简单地“调用”端点。代理接口不必与端点操作相同。服务签名,但代理需要确保传输到服务的消息正是服务合同所描述的。(好的?)

2 个答案:

答案 0 :(得分:0)

1)您必须在app.config中指定端点(A-Address,B-Binding,C-contract),此app.config必须与您的主机应用程序(在这种情况下为您的控制台应用程序) 2)如果某个客户端运行visual studio的命令提示符并运行它 -

,则可以在LAN中识别此服务

SvcUtil http://localhost/MyService/MyService.svc /out:c:\Proxy.cs(示例命令会根据您的情况更改各种值...)

这里Proxy.cs包含Proxy类,客户端应该将其添加到解决方案并调用代理类的方法,在此Proxy.cs所在的同一目录中,您将找到1 .config文件,粘贴此文件的内容到客户端的app.config。 3)MEX端点需要交换元信息。

答案 1 :(得分:0)

在你的第一个问题中,当你说“主持人”时,我认为你的意思是“客户”。为此,您应该在代码中将Uri放在ServiceHost的构造函数中。 例如。

ServiceHost host = new ServiceHost(typeof(HelloWorld), new Uri("http://localhost:1234/helloworld", UriKind.Absolute)); 

然后右键单击您的项目并转到Debug / Start new instance。现在,您的服务已在给定的Uri下启动并运行。在Visual Studio中,转到顶部的“调试”菜单,然后选择“全部分离”。现在您的服务应用程序仍在运行。您现在可以转到您的客户端项目并添加您习惯的服务引用。只需在添加服务引用对话框中填写Uri即可。

关于你的上一个问题。它只是意味着visual studio为您的服务引用创建了一个本地文件,并且作为开发人员,您应该使用该客户端类,就好像它是服务本身并且它可以工作: - )

相关问题