wcf服务寄宿时,如何指定终结点三要素才不会出错
来源:互联网 发布:狸窝转换器mac版 编辑:程序博客网 时间:2024/05/20 11:51
wcf中服务寄宿时,怎样指定服务契约、绑定和终结点地址。
情形一:服务契约相同、绑定相同、地址相同
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.Open();}
实验结果:
情形二:相同契约、同一个绑定对象、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){WSHttpBinding wsHttpBinding = new WSHttpBinding();serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:
情形三:服务契约相同、绑定相同、地址不同
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3722/calculatorservice");serviceHost.Open(); }
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形四:相同契约、同一个绑定对象、不同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))) {WSHttpBinding wsHttpBinding = new WSHttpBinding(); serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3722/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形五:相同契约、不同绑定、不同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new NetTcpBinding(), "net.tcp://127.0.0.1:3722/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形六:相同契约、不同绑定、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new NetTcpBinding(), "net.tcp://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:
情形七:不同契约、相同绑定、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:
情形八:不同契约、同一个绑定对象、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){WSHttpBinding wsHttpBinding = new WSHttpBinding();serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形九:不同契约、相同绑定、不同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",new WSHttpBinding(), "http://127.0.0.1:3722/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形十:不同契约、同一个绑定对象、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){WSHttpBinding wsHttpBinding = new WSHttpBinding();serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",wsHttpBinding, "http://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
情形十一:不同契约、不同绑定、相同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){ serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",new NetTcpBinding(), "net.tcp://127.0.0.1:3721/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:
情形十二:不同契约、不同绑定、不同地址
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService))){serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculator",new WSHttpBinding(), "http://127.0.0.1:3721/calculatorservice");serviceHost.AddServiceEndpoint("Artech.WcfServices.Service.Interface.ICalculatorII",new NetTcpBinding(), "net.tcp://127.0.0.1:3722/calculatorservice");serviceHost.Open();Console.Read();}
实验结果:可以正常寄宿服务,正常启动服务。不管使用哪一个地址都可以正常调用服务。
下面是对实验结果的归纳。
可见:
对于同一个服务,不管使用的是相同的绑定还是同一个绑定对象,还是不同的绑定,只要终结点相同,都不能正常寄宿。
对于不同的服务,采用相同的绑定和不同的绑定时,只要终结点地址相同,都不能正常寄宿。但是采用同一个绑定对象时,不管终结点地址相同与否,都正常。
下面再来看一下基地址的情况。
wcf中可以为同一个服务指定一个或者多个基地址,但是不允许为同一个服务的同一种传输协议指定多个基地址。
- wcf服务寄宿时,如何指定终结点三要素才不会出错
- WCF服务IIS寄宿
- 寄宿WCF服务
- 【WCF服务自我寄宿】
- WCF之服务寄宿
- Windows服务寄宿WCF服务
- 第二章 寄宿WCF服务
- 深入学习WCF-服务寄宿
- WCF服务的批量寄宿
- WCF服务寄宿及调用
- 使用控制台程序寄宿wcf服务时,不正确使用Console.Read()方法导致服务寄宿失败
- 在windows服务中寄宿wcf服务
- SVN checkout出来的项目如何配置才不会出错!
- 【创建WCF服务寄宿到IIS】
- 寄宿于CS程序的WCF服务
- 将WCF寄宿到windows 服务中
- [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
- WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
- 最长公共子序列的一个应用
- NIO之SocketChannel简单使用
- 容器搜索算法的选择
- 简谈Cookie和Session机制与实际应用
- 安卓技术收录
- wcf服务寄宿时,如何指定终结点三要素才不会出错
- 超实用PHP函数总结整理
- 从装饰设计模式角度学习JavaIO字节流
- 第6章 使用Linux环境变量
- android fragment与activity交互demo
- Android多级树形结构列表(理论上可以无限级)
- 交互设计师,你原来是这样的“线框仔”
- MVP继续封装
- JAVA设计模式之门面模式(外观模式)