文档章节

如何实现IIS 7.0对非HTTP协议的支持

jswjia
 jswjia
发布于 2015/01/20 16:53
字数 1101
阅读 17
收藏 0

在《再谈IIS与ASP.NET管道》介绍各种版本的IIS的设计时,我们谈到IIS 7.0因引入WAS提供了对非HTTP协议的支持。这个对于WCF的服务寄宿来说意义重大,它意味着我们通过IIS/WAS寄宿的服务终结点不仅仅可以采用BasicHttpBinding、WSHttpBinding/WS2007HttpBinding等基于HTTP协议的绑定,也可以采用NetTcpBinding、NetNamedPipeBinding和NetMsmqBinding。

在默认的情况下,IIS 7.0针对非HTTP支持的特性是关闭的。为了将一个IIS中的Web应用作为WCF服务的宿主,并采用非HTTP的通信协议,我们不但需要为Web应用所在的站点添加相应的站点绑定(net.tcp、net.pipe和net.msmq等),还需要为Web应用本身进行相应的设置使之允许相应的通信协议。我们可以通过三种方式实现相应的设置。

一、命令行设置

我们可以以命令行的方式执行Appcmd.exe来设置站点绑定和开启某个Web应用针对某种协议的支持,该命令所在的目录为%windir%\system32\inetsrv\。如下所示的命令通过Appcmd.exe为默认站点(Default Web Site)添加了基于net.tcp、net.pipe和net.msmq的站点绑定,其中net.tcp绑定采用默认端口808。然后在该站点下创建了一个名称为WcfServices的Web应用,映射的物理路径是C:\WcfServices\Service。最后为创建的Web应用同时开启了针对http、net.tcp、net.pipe和net.msmq四种协议的支持。

   1: REM 为站点” Default Web Site”添加针对net.tcp,net.pipe和net.msmq站点绑定
   2: appcmd.exe set site "Default Web Site" –+bindings.[protocol='net.tcp',bindingInformation='808:*']
   3: appcmd.exe set site "Default Web Site" –+bindings.[protocol='net.pipe',bindingInformation='*']
   4: appcmd.exe set site "Default Web Site" –+bindings.[protocol='net.msmq',bindingInformation='localhost']
   5: 
   6: REM 创建Web应用WcfServices
   7: appcmd add app /site.name:"Default Web Site" /path:/WcfServices /physicalpath:C:\WcfServices\Service
   8: 
   9: REM 为WcfServices应用开启对http、net.tcp、net.pipe和net.msmq的支持
  10: appcmd.exe set app "Default Web Site/WcfServices" /enabledProtocols:http,net.pipe,net.tcp,net.msmq

二、配置文件设置

所有方式的设置都体现在对相应配置文件的修改。IIS 7.0中用于控制站点绑定和Web应用针对某个协议的支持的配置文件为applicationHost.config,该配置文件保存的目录为%windir%\system32\inetsrv\config\。我们可以直接修改这个配置文件来完成我们需要的设置。

存在于applicationHost.config中的如下这段配置就是上面的命令行执行的结果。三个新增的站点绑定被添加到了表示站点配置节的<bindings>节点中,而表示我们创建的Web应用的<application>节点的enabledProtocols属性中包含了我们通过命令行设置的四种协议。

   1: <configuration>
   2:   ...
   3:   <system.applicationHost>
   4:     ...
   5:     <sites>
   6:       ...
   7:       <site name="Default Web Site" id="1" serverAutoStart="true">
   8:         ...
   9:         <application path="/WcfServices" enabledProtocols="http,net.pipe,net.tcp,net.msmq">
  10:           <virtualDirectory path="/" physicalPath="C:\WcfServices\Service" />
  11:         </application>
  12:         <bindings>
  13:           <binding protocol="http" bindingInformation="*:80:" />
  14:           <binding protocol="net.tcp" bindingInformation="808:*" />
  15:           <binding protocol="net.pipe" bindingInformation="*" />
  16:           <binding protocol="net.msmq" bindingInformation="localhost" />
  17:         </bindings>
  18:       </site>
  19:     </sites>
  20:   </system.applicationHost>
  21: </configuration>

三、IIS管理器设置

IIS管理器本身提供了可视化的方式是我们很容易地实现对站点绑定的添加、删除和修改。如图7-11所示,如果我们在IIS管理器中选择相应的站点,在右边“编辑网站”一栏会出现一个“绑定…”按钮。点击该按钮会出现一个“网站绑定”的对话框,当前站点的所有绑定会在这个对话框中列表。我们可以编辑和删除现有的站点绑定,也可以添加新的站点绑定。IIS管理器只提供了针对站点绑定的设置,为站点中具体某个Web应用开启或者关闭某种协议的支持还得需要通过上面两种方式来完成。

clip_image002

为作为WCF服务宿主的Web应用和它所在的站点进行了如上的设置之后,我们就可以直接将基于HTTP的终结点绑定直接替换成基于其他协议类型的绑定。下面配置片断所示的客户端终结点采用了NetTcpBinding,而地址代表部署在宿主Web应用的.svc文件地址。

   1: <configuration>
   2:   <system.serviceModel>
   3:     <client>
   4:       <endpoint name="calculatorservice"
   5:              address="net.tcp://localhost/WcfServices/CalculatorService.svc"
   6:              binding="netTcpBinding"
   7:              contract="Artech.WcfServices.Service.Interface.ICalculator"/>
   8:       </client>
   9:   </system.serviceModel>
  10: </configuration>

© 著作权归作者所有

jswjia
粉丝 1
博文 15
码字总数 29863
作品 0
郑州
程序员
私信 提问
如何实现IIS 7.0对非HTTP协议的支持

在《再谈IIS与ASP.NET管道》介绍各种版本的IIS的设计时,我们谈到IIS 7.0因引入WAS提供了对非HTTP协议的支持。这个对于WCF的服务寄宿来说意义重大,它意味着我们通过IIS/WAS寄宿的服务终结点...

长平狐
2012/09/04
118
0
IIS 5.x与ASP.NET

转自:http://www.cnblogs.com/artech/archive/2009/06/20/1507165.html 我们先来看看IIS 5.x是如何处理基于ASP.NET资源(比如.aspx,.asmx等)请求的,整个过程基本上可以通过图1体现。 IIS ...

莫问今朝乄
2017/12/21
0
0
菜菜从零学习WCF四(承载服务)

有图有真相,如果你也是菜鸟那就也来看看我这个菜鸟一步一步的实现吧。 我们都知道WCF在运行的时候必须自己提供宿主来承载服务。WCF 本身没有附带宿主,就需要我们自己来依附于宿主而承载WCF...

aehyok
2013/03/25
0
0
IIS之负载均衡---应用请求路由模块的使用(ARR)

1、啥是ARR? Microsoft Application Request Routing (ARR) for IIS 7是一个基于代理的路由模块,它基于http头、server variables和负载均衡算法将http请求转发到各个内容服务器。 ARR依赖U...

周志超
2016/01/07
0
0
Duwamish部署方案篇

Duwamish部署方案篇 Duwamish 7.0 支持两种多计算机部署方案。非分布式部署方案在一台 Web 主机上部署 Web 层、业务外观、业务规则和数据访问层,但可以在群集间复制该 Web 主机以达到负载平...

springfe
2006/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
4
0
程序性能checklist

程序性能checklist

Moks角木
昨天
6
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
5
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
6
0
float浮动

float浮动 float浮动概念及原理: 文档流:文档流是文档中可显示对象在排列时所占用的位置。 加浮动的元素,会脱离文档流,会沿父容器靠左或靠右排列,如果之前已经有浮动的元素,会挨着浮动...

studywin
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部