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,或者我是否需要自己创建app.config并使其类似于wcf服务端点?

除此之外,局域网上的其他计算机怎么可能访问此主机?

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

1)您必须在app.config中指定终结点(A-Address、B-Binding、C-contract),并且此app.config必须与您的主机应用程序(在本例中为控制台应用程序)在一起2) 如果某个客户端运行visualstudio的命令提示符并运行此-,则可以在局域网中识别此服务

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

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

在你的第一个问题中,我假设你说"主机"是指"客户端"。为此,您应该在代码中的ServiceHost的构造函数中放入一个Uri。例如

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

然后右键单击您的项目并转到调试/启动新实例。现在,您的服务已在给定的Uri下启动并运行。在Visual Studio中,转到顶部的"调试"菜单,然后选择"全部分离"。现在,您的应用程序和服务仍在运行。现在,您可以像以前一样转到客户端项目并添加服务引用。只需在"添加服务引用"对话框中填写Uri即可。

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

最新更新