设为首页 收藏本站
查看: 1589|回复: 0

[经验分享] 如何实现IIS 7.0对非HTTP协议的支持

[复制链接]

尚未签到

发表于 2015-8-12 10:02:08 | 显示全部楼层 |阅读模式
  在《再谈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=&quot;Default Web Site&quot; id=&quot;1&quot; serverAutoStart=&quot;true&quot;>

   8:         ...

   9:         <application path=&quot;/WcfServices&quot; enabledProtocols=&quot;http,net.pipe,net.tcp,net.msmq&quot;>

  10:           <virtualDirectory path=&quot;/&quot; physicalPath=&quot;C:\WcfServices\Service&quot; />

  11:         </application>

  12:         <bindings>

  13:           <binding protocol=&quot;http&quot; bindingInformation=&quot;*:80:&quot; />

  14:           <binding protocol=&quot;net.tcp&quot; bindingInformation=&quot;808:*&quot; />

  15:           <binding protocol=&quot;net.pipe&quot; bindingInformation=&quot;*&quot; />

  16:           <binding protocol=&quot;net.msmq&quot; bindingInformation=&quot;localhost&quot; />

  17:         </bindings>

  18:       </site>

  19:     </sites>     

  20:   </system.applicationHost>

  21: </configuration>

三、IIS管理器设置
  IIS管理器本身提供了可视化的方式是我们很容易地实现对站点绑定的添加、删除和修改。如图7-11所示,如果我们在IIS管理器中选择相应的站点,在右边“编辑网站”一栏会出现一个“绑定…”按钮。点击该按钮会出现一个“网站绑定”的对话框,当前站点的所有绑定会在这个对话框中列表。我们可以编辑和删除现有的站点绑定,也可以添加新的站点绑定。IIS管理器只提供了针对站点绑定的设置,为站点中具体某个Web应用开启或者关闭某种协议的支持还得需要通过上面两种方式来完成。
DSC0000.jpg
  为作为WCF服务宿主的Web应用和它所在的站点进行了如上的设置之后,我们就可以直接将基于HTTP的终结点绑定直接替换成基于其他协议类型的绑定。下面配置片断所示的客户端终结点采用了NetTcpBinding,而地址代表部署在宿主Web应用的.svc文件地址。





   1: <configuration>

   2:   <system.serviceModel>   

   3:     <client>

   4:       <endpoint name=&quot;calculatorservice&quot;

   5:              address=&quot;net.tcp://localhost/WcfServices/CalculatorService.svc&quot;

   6:              binding=&quot;netTcpBinding&quot;

   7:              contract=&quot;Artech.WcfServices.Service.Interface.ICalculator&quot;/>

   8:       </client>

   9:   </system.serviceModel>

  10: </configuration>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97803-1-1.html 上篇帖子: WCF开发实战系列二:使用IIS发布WCF服务 下篇帖子: IIS处理并发请求时出现的问题及解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表