如何实现IIS 7.0对非HTTP协议的支持
在《再谈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]
7: appcmd add app /site.name:"Default Web Site" /path:/WcfServices /physicalpath:C:\WcfServices\Service
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属性中包含了我们通过命令行设置的四种协议。
9: application path="/WcfServices" enabledProtocols="http,net.pipe,net.tcp,net.msmq"
三、IIS管理器设置
IIS管理器本身提供了可视化的方式是我们很容易地实现对站点绑定的添加、删除和修改。如图7-11所示,如果我们在IIS管理器中选择相应的站点,在右边“编辑网站”一栏会出现一个“绑定…”按钮。点击该按钮会出现一个“网站绑定”的对话框,当前站点的所有绑定会在这个对话框中列表。我们可以编辑和删除现有的站点绑定,也可以添加新的站点绑定。IIS管理器只提供了针对站点绑定的设置,为站点中具体某个Web应用开启或者关闭某种协议的支持还得需要通过上面两种方式来完成。
为作为WCF服务宿主的Web应用和它所在的站点进行了如上的设置之后,我们就可以直接将基于HTTP的终结点绑定直接替换成基于其他协议类型的绑定。下面配置片断所示的客户端终结点采用了NetTcpBinding,而地址代表部署在宿主Web应用的.svc文件地址。
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 原文链接
最近在做网站的访问性能提升,直接将站点访问由HTTP 1.1升级到了HTTP 2.0,访问性能确实有所提升,关于HTTP 2.0的详细介绍相对于HTTP 1.1的优势在这里就不介绍了,请自行百度,本文主要介绍如何在IIS上配置实现HTTP 2.0。
相关文章
- http协议客户端向服务器端请求时一般需要发送的内容
- Http协议Get方式获取图片
- http协议进阶(一)HTTP概述
- http协议(四)http状态码
- http协议基础(七)通用首部字段
- http协议基础(六)报文首部
- HTTP 协议简介
- java http post/get 服务端和客户端实现json传输
- 应用层--HTTP协议
- http form get post本质区别
- HTTP协议学习笔记
- HTTP协议的消息头:Content-Type和Accept的作用
- Java精选笔记_HTTP协议
- Http协议规范及格式
- 关于HTTP协议
- error: RPC failed; result=22, HTTP code = 422
- #HTTP协议学习# (二)基本认证
- 监控系统的多协议直播(RTSP RTMP HTTP Live Streaming)
- 转:Http协议中Cookie详细介绍
- 转:Http协议中Cookie详细介绍
- WCF如何克服HTTP传输协议的局限提供对不同消息传输模式的实现
- Android分别使用HTTP协议和TCP协议实现上传文件
- Wireshark实验——HTTP 协议
- HTTP HSTS协议和 nginx
- 九、python学习之HTTP协议
- 我的Android进阶之旅------>Android基于HTTP协议的多线程断点下载器的实现