标签:
问题:
使用WCF Service Configuration Editor工具生成XML文件来进行WCF的配置,而不是在CS文件中敲代码。
解决过程:
要取代上篇文章中HostApp.cs文件里的几行配置代码,使用工具配置步骤如下:
原理:
这个,工具生成XML的原理,我还真讲不出来,大标签套小标签的它都先做好了,你只要往里面填如参数就行。不过前面有个地址没有填,有必要提一下。在上面的XML文件中你会发现有这么一段:
<endpoint address="" binding="basicHttpBinding" name="Hello" Contract="Contracts.IHello" listenUriMode="Explict"/> <host> <baseAddress> <add baseAddress="http://localhost:8080/HelloService"/> </baseAddress> </host>
endpiont的地址为空,只是配了Host的基地址。当然也可以直接配Endpoint的地址,不配Host的基地址。但如果host了多个服务呢?有多了Endpoint挂在同一个host下,那么配基地址就显得很重要。从其他地方找的一个例子,代码如下:
<service name="Wcf.Services.MallService" behaviorConfiguration="MallServiceBehaviors" > <endpoint address="" contract="Wcf.Contract.IUserService" binding="basicHttpBinding"></endpoint> <endpoint address="" contract="Wcf.Contract.IOrderService" binding="basicHttpBinding"></endpoint> <host> <baseAddresses> <add baseAddress="http://localhost:8899/MallService%22/> </baseAddresses> </host> </service>
然后我想讲的是,如何用这个生成的app.config文件替换原来HostApp中的代码。
要做的改变如下:
HostApp namespace Host { //用了xml文件,这个类就可以精简很多,只需要这几句就行 public class HostApp { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(HelloWorld)); host.Open(); Console.WriteLine("Start Your Service."); Console.ReadKey(); host.Close(); } } }
2.运行服务,并在浏览器地址栏中输入http://localhost:8080/HelloService,出现如下效果,表示服务端OK了。
3.接下来就是Client端了。打开客户端的项目(服务端不要关闭),选择Client项目下的Service Reference,在你的服务命名空间上右键,点击Update Service Reference。
会生成新的app.config文件。ClientApp的代码没变,点击运行。
namespace Client { public class ClientApp { static void Main(String[] args) { ServiceEndpoint httpEndpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(IHello)), new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/HelloService")); using (ChannelFactory<IHello> factory = new ChannelFactory<IHello>(httpEndpoint)) { IHello service = factory.CreateChannel(); service.Hello(); } } } }
WCF Service Configuration Editor的使用
标签:
原文地址:http://www.cnblogs.com/wolfocme110/p/4429356.html