对于在IIS中通过W3SVC或WAS寄宿的WCF Service,其在浏览器中显示的地址(Web地址),与其配置文件中的BaseAddress和EndPoint Address有什么关系呢?让我们来分析一下。

第一,在IIS中寄宿时,不管WCF Service的EndPoint用什么协议向外暴露,它在浏览器中显示的地址不会变。该地址是WCF Service的可浏览地址(Web地址),它取决于WCF Service在IIS中的虚拟路径。该地址是面向浏览器的,只支持Http协议,例如http://localhost/WcfSrvDemo4/OrderProcessorService.svc。此时(除非使用MSMQ协议),BaseAddress的设定值会被忽略掉,WCF Service的可浏览地址(Web地址)成为客户端访问的“基础地址”。如果不在IIS中寄宿,就不能再浏览器中查看,那么就没有所谓的可浏览器地址(Web地址),BaseAddress开始起作用。

第二,一般来说,基础地址(BaseAddress或者Web地址)和EndPoint Address具有基址和相对路径的关系,基础地址(BaseAddress或者Web地址)+ EndPoint Address属性,就是完整的EndPoint地址,是客户端能够访问的地址。

第三,在IIS中寄宿时,可浏览地址(Web地址)不变,EndPoint的地址要随着所使用协议情况而变化。使用Http协议是,EndPoint的地址就是第二点所说的可浏览地址(Web地址)+ EndPoint的Address属性。使用其他协议的情况,就有些不同。当时用TCP和NamedPipe的时候,EndPoint的地址是先计算出可浏览地址(Web地址)+EndPoint的Address属性,然后将地址中的http相应的换成net.tcp和net.pipe,例如net.tcp://localhost/WcfSrvDemo4/OrderProcessorService.svcnet.pipe://localhost/WcfSrvDemo4/OrderProcessorService.svc

而当使用MSMQ来传输数据的时候,情况就会变得更加复杂。虽然可浏览地址仍旧不会变,但是EndPoint的地址,不再是简单地修改可浏览地址的协议部分(必须使用net.msmq协议),而需要在主机之后,虚拟路径之前添加上队列类型信息(private,public或者其他的)。例如net.msmq://localhost/private/WcfSrvDemo4/OrderProcessorService.svc。值得注意的是,这个路径必须指向一个实际存在的MSMQ队列,否则就会出错。

第四,SVCUtil使用的mex的EndPoint地址, 对于IIS寄宿的服务来说,就是 “可浏览地址(Web地址)/mex”;对于其他寄宿方式的服务来说,就是BaseAddress+EndPoint属性。

地址是ABC中最复杂的一环,它要解决在哪里的问题。但网络环境和所用协议的不同,让这个本来简单的问题复杂了。但是,弄懂了复杂的逻辑之后,复杂性的强大之处就会展露无遗。

WCF :IIS寄宿方式的Web地址、BaseAddress和EndPoint Address的关系的更多相关文章

  1. 微软 WCF的几种寄宿方式,寄宿IIS、寄宿winform、寄宿控制台、寄宿Windows服务

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  2. WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...

  3. (转)WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  4. WCF寄宿方式

    WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...

  5. WCF学习之三, 寄宿方式 代码,配置文件

    可以通过代码或者配置文件寄宿WCF服务,在使用过程中的一些心得,记录一下,方便后续查阅. 预备知识,几个地址的作用 1. behavior.HttpGetUrl  定义元数据的地址,如果不定义基地址, ...

  6. [转]WCF的几种寄宿方式

    转自:WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为 ...

  7. 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务

    一.理解什么是WCFWCF就是.NET平台下各种分布式技术的集成,并提供了一套统一的编程接口 二.WCF的定义WCF(Windows Communication Foundation)是微软为构建面向 ...

  8. WCF服务寄宿IIS与Windows服务 - C#/.NET

    WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的运行 ...

  9. WCF服务寄宿IIS与Windows服务

      WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的 ...

随机推荐

  1. iptables实现反向代理

    拓扑图 实现目标 公网用户通过Firewall服务器(iptables实现)访问内网http服务 配置 #iptables iptables -t nat -A PREROUTING -p tcp - ...

  2. 通过Minimal版的iso安装CentOS7之后升级Desktop

    重新安装了CentOS7,但是使用的是Minimal的iso镜像安装的,所以安装之后只有文本界面,这里记录一下重新安装图形界面的过程. 连接网络 通过文本界面登陆后是没有连接网络的,所以需要修改配置连 ...

  3. [Android]Volley源码分析(三)

    上篇看了关于Request的源码,这篇接着来看下RequestQueue的源码. RequestQueue类图:

  4. POJ3207Ikki's Story IV - Panda's Trick(模板题)

    题目链接 题意:平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.给你的信息中,每个点最多只会连接的一条边.问能不能连接这m条 ...

  5. ecshop 给商品随机添加评论

    <?php /* * 随机插入商品评论 * * * */ define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init. ...

  6. Arcgis 几何网络分析

    ArcGIS:网络分析(转)   由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵 注:关于几何网络的建立见前面的& ...

  7. easyui tree获取直接子节点而不获取孙子节点方法

    $(node.target.nextElementSibling).children().each(function(index,ele){ if(checked){ $('#rcDimTreeRow ...

  8. JavaScript排序算法——堆排序

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. sublime2的快捷键

    1.快速文件转换 与sublime2中搜索文件快捷键一样,ctrl+p ctrl + p //window comm + p //mac 2.在代码中搜索 在所有已加载的文件中查找一个特定的字符串,支 ...

  10. RGB to HSI, HSI to RGB Conversion Calculator

    The RGB color model is an additive system in which each color is defined by the amount of red, green ...