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程序的 ...
随机推荐
- fedora22有时不能启动
[3.327871][drm:intel_set_pch_fifo_underrun_reporting [i915]] *ERROR* uncleared pch fifo underrun on ...
- POJ3258 River Hopscotch
地址 别人的代码,自己边界总是控制不好,还不知道哪里错了!思维!这种问题代码越简洁反而越不容易错吧.. #include<stdio.h> #include<algorithm> ...
- class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
今天在工作中遇到了下面的问题: java.lang.IllegalStateException: Failed to load ApplicationContext at org.springfram ...
- AngularJs ngCloak、ngController、ngInit、ngModel
ngCloak ngCloak指令是为了防止Angular应用在启动加载的时候html模板将会被短暂性的展示.这个指令可以用来避免由HTML模板显示造成不良的闪烁效果. 格式: ng-cloak ...
- HDU 1022 Train Problem I(栈模拟)
传送门 Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of st ...
- [COCI2012Final]Pro1
校内OJ上的题. 数据范围非常小,用暴搜就可以,加点剪枝阶乘级别的复杂度竟然可以跑得比$O(N^4)$的算法还要快QAQ. 我用的是Floyd,参考了别人的代码.大概就是先跑个Floyd把点点之间路径 ...
- POJ3114 Countries in War (强连通分量 + 缩点 + 最短路径 + 好题)
题目链接 题意是说在几个邮局之间传送一份信件,如果出发点和终止点在同一个国家传递,则时间为0,否则让你求花费最少时间,如果不能传到,则输出Nao e possivel entregar a carta ...
- 利用 Django REST framework 编写 RESTful API
利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framewor ...
- JavaWeb学习笔记——JSP标准标签库JSTL
- HTTP Status Code [RFC]
来源:http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml Hypertext Transfer Prot ...