为什么会失败WCF遇到302响应时,将调用一个SOAP服务
发布网友
发布时间:2022-04-20 21:50
我来回答
共1个回答
热心网友
时间:2023-07-25 15:51
本文就从WebService寻址开始,总结一下WCF中的几种地址。 目录:WebService寻址
逻辑地址与物理地址
基地址、相对地址、绝对地址
1、WebService寻址与以协议无关的SOAP作为消息的载体在被客户端发往服务端以后就不再由客户端所控制了。如果以HTTP将SOAP从客户端发往服务端,通过HTTP协议的标准动作如Get、Post进行操作,服务处理完毕以后再通过HTTP响应发往客户端这样一次交互就完成了。可事实上,SOAP没有标准方法来指定消息的目的地址、如何返回响应以及错误在哪等。如果消息交互变得复杂一点,这种问题就无法解决。如:由客户端发出去的消息需经过多个服务路由处理。WebService寻址规范正是为了解决这些问题。在WebService寻址规范中有两个重要的概念:终结点应用、消息报 头。它可以用于在WebService中传达Service Endpoint所需要的信息,也可为消息在WebService间传送提供地址。 如下所示显示终结点应用所需的信息集
xs:anyURI
... ?* 在终结点应用所需的信息集中只有xs:anyURI是必须的,其他几个都是可选的。 消息报头:它是WebService寻址中定义了一些标准的SOAPHeader,它扩展并添加到SOAPHeader中。2、逻辑地址与物理地址物理地址是ServiceEndpoint的ListenUri属性指明的值,也就是监听地址;逻辑地址则是终结点地址,即EndpointAddress,即SOAP消息的"To"指向的地址。public class ServiceEndpoint{// Fields private EndpointAddress address;
private Uri listenUri;
private ListenUriMode listenUriMode;
//其他属性} WCF客户端与服务端交互是通过物理地址,即监听地址实现的。在WCF中,服务通过物理地址在制定的位置监听传入的消息。在WCF配置中,元素中address属性指定的即为逻辑地址;listenUri指定物理地址。除非通过listenUri指定,一般逻辑地址与物理地址是相同的。 如果服务端配置了物理地址,在客户端通过ClientViaBehavior告之Client服务端所使用的物理地址。Server端配置如下: Client端配置如下: 使用物理地址,客户端通过与服务端相同的物理地址发送消息。那么逻辑地址有什么用呢。