WCF :IIS寄宿方式的Web地址、BaseAddress和EndPoint Address的关系
对于在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.svc和net.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的关系的更多相关文章
- 微软 WCF的几种寄宿方式,寄宿IIS、寄宿winform、寄宿控制台、寄宿Windows服务
WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...
- WCF开发框架形成之旅---WCF的几种寄宿方式
WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...
- (转)WCF开发框架形成之旅---WCF的几种寄宿方式
WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...
- WCF寄宿方式
WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...
- WCF学习之三, 寄宿方式 代码,配置文件
可以通过代码或者配置文件寄宿WCF服务,在使用过程中的一些心得,记录一下,方便后续查阅. 预备知识,几个地址的作用 1. behavior.HttpGetUrl 定义元数据的地址,如果不定义基地址, ...
- [转]WCF的几种寄宿方式
转自:WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为 ...
- 重温WCF之构建一个简单的WCF(一)(1)通过控制台和IIS寄宿服务
一.理解什么是WCFWCF就是.NET平台下各种分布式技术的集成,并提供了一套统一的编程接口 二.WCF的定义WCF(Windows Communication Foundation)是微软为构建面向 ...
- WCF服务寄宿IIS与Windows服务 - C#/.NET
WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的运行 ...
- WCF服务寄宿IIS与Windows服务
WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的 ...
随机推荐
- Linux WebServer WebRoot Path Identification
目录 . HTTPD(Apache) . NGINX . TENGINE . JBOSS . TOMCAT . LIGHTTPD 1. HTTPD(Apache) 0x1: 启动参数 Usage: . ...
- 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。
, 解决方法:通过从网上重新下载dll文件 拷贝到报错的目录下,替换掉原有的dll,可以正确运行.
- Java中StringBuilder的清空方法比较
StringBuilder 没有提供clear或empty方法.清空有3种方法:1)使用delete2)新生成一个,旧的由系统自动回收3)使用setLength 将三种方法循环1000万次,代码: p ...
- Beta Daily Scrum 第三天
[目录] 1.任务进度 2.困难及解决 3.燃尽图 4.代码check-in 5.总结 1. 任务进度 学号 今日完成 明日完成 612 初步完成成就界面的统计图表 继续编写成就界面的图表 615 白 ...
- java Base64算法的使用
Base64是常见的网络加密算法,Base64编码可用于在HTTP环境下传递较长的标识信息.详见 Base64介绍 1 自定义的base64算法 Base64Encrypt.java public c ...
- JZOJ P1847:找01串
传送门 DP预处理+贪心 首先设$f[i][j]$表示长度为$i$的01串中有不大于$j$个1,然后显然 $f[i][j]=\sum_{k=1} ^{j} C[i][k]$ $C[i][j]=C[i- ...
- centos搭建https协议的tomcat和apache服务器以及nginx服务器,mysql php
Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web ...
- php发送http请求方法实例及详解
http请求有get,post. php发送http请求有三种方式[我所知道的有三种,有其他的告诉我]. file_get_contents();详情见:http://www.whosmall.com ...
- IOS VFL屏幕自适应
-(void)fun1{ //注意使用VFL,不用设置视图的frame UIView *view = [[UIView alloc] init]; view.backgroundColor = [UI ...
- CentOS编译安装NodeJS+Express
NodeJS是基于Chrome’s Javascript runtime,也就是Google V8引擎执行Javascript的快速构建网络服务及应用的平台,其优点有: 在CentOS编译安装Node ...