摘要

从IIS 7 开始, IIS增加了对非HTTP协议的支持. 因此, 自IIS 7之后, 可以将NetTcpBinding等非HTTP协议的Bindings直接寄宿在IIS上面. 本文将介绍如何在IIS上配置WCF NetTcpBinding, 并且对其工作的方式进行比较深入的讨论

Windows Process Activation Service

下图是IIS监听在HTTP协议上的工作方式. 对HTTP协议的监听是在内核模式下的HTTP.sys的帮助下完成

从IIS7开始,IIS还加入了对非HTTP协议的支持。对于那些采用非HTTP协议,但是又需要部署在IIS里面,从而利用IIS优秀的管理功能的服务来说,比如WCF服务,可谓一大福音。IIS7可以支持多种非HTTP协议,比如net.tcp,net.msmq, net.pipe等。由于HTTP.sys并不会监听非HTTP协议的端口. 对于非HTTP协议, 则有各自的Windows Serivce来进行监听. 例如Net.Tcp协议, 则是由Net.Tcp Port Sharing Service和Net.Tcp Listener Adapter服务进行监听, 并且寄宿在SMSvcHost.exe中.

进过拆分之后, WAS不仅处理HTTP请求,还可以处理非HTTP协议的请求。HTTP请求是由Http.sys截获的,并且在传递给WAS之前,就已经传递给w3svc中的HTTP管理器,但是,其他请求都是通过WAS侦听器的适配器接口转发给配置管理器和进程管理器的,而没有经过w3svc。

关于 WAS的介绍可以参考这里 :

http://msdn.microsoft.com/en-us/library/ms734677(v=vs.110).aspx

http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/02/08/iis-7-support-for-non-http-protocols.aspx

为了让IIS支持net.tcp,必须先安装WAS(Windows Process Activation Service),即windows进程激活服务。

一:生成一个简单的wcf项目,以及IIS服务配置,发布项目 ,步骤

二:Web.config配置

<?xml version="1.0" encoding="utf-8"?>
<configuration><appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /></appSettings><system.web><compilation debug="true" targetFramework="4.5" /><httpRuntime targetFramework="4.5"/></system.web><system.serviceModel>

<services><service name="TcpWcf.Service1" ><endpoint binding="netTcpBinding" address="" contract="TcpWcf.IService1" /><endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/><host><baseAddresses><add baseAddress="net.tcp://localhost:7878/Service1.svc"/></baseAddresses></host></service></services><bindings><netTcpBinding><binding portSharingEnabled="true"></binding></netTcpBinding></bindings>

<behaviors><serviceBehaviors><behavior><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->  【需要修改】<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="false"/>  【需要修改】
</behavior> </serviceBehaviors> </behaviors> <protocolMapping> <add binding="basicHttpsBinding" scheme="https" /> </protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <directoryBrowse enabled="true"/> </system.webServer> </configuration>

三:发布时网站配置,进行TCP绑定

行非HTTP的服务寄宿是WAS为WCF提供的最显著的特性。由于在默认的情况下,IIS仅仅支持对于HTTP请求的处理,我们需要相应的方式对IIS相关配置进行相关的修改,从而改变IIS默认的请求处理行为。在上面我们说过,IIS 7.0广泛采用了基于XML文件的配置方式,所以最终极的方式就是直接修改相应的配置文件。但是,直接修改配置文件的方式,出错的频率很高,对于很多的配置,我们都可以直接通过IIS管理器进行相应的修改。此外,我们可以选择通过命令行的方式修改相应的配置,IIS为我们提供了一系列的命令。

windows里面的四个服务需要开启

  • NetTcpPortSharing为WCF提供TCP端口共享,关于端口共享;
  • NetTcpActivator为WAS提供基于TCP的激活请求,包含TCP监听器和对应的监听适配器;
  • NetPipeActivator为WAS提供基于命名管道的激活请求,包含命名管道监听器和对应的监听适配器;
  • NetMsmqActivator为WAS提供基于MSMQ的激活请求,包含MSMQ监听器和对应的监听适配器。

四:发布后的结果

五:客户端引用,引用时需要多点几次

转载于:https://www.cnblogs.com/xiaoyaodijun/p/6771352.html

WCF 非http寄宿IIS相关推荐

  1. WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿

    原文:[原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿 在上面一篇文章中,我们对不同版本的IIS,以及ASP.NET得的实现机制进行了详细而深入的分析.在介绍IIS7.0的时候,我们 ...

  2. [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿

    在上面一篇文章中,我们对不同版本的IIS,以及ASP.NET得的实现机制进行了详细而深入的分析.在介绍IIS7.0的时候,我们谈到,HTTP.SYS+W3SVC实现了基于HTTP的请求监听,在此基础上 ...

  3. WCF服务部署到IIS上的步骤

    WCF服务部署到IIS上,实现其他电脑可以访问本机的WCF 平时做的网站是在vs中进行发布,在到iis管理器中进行发布,这一次是使用WCF管理进行发布,这种基础下,对方可以输入本机IP可访问发布的东西 ...

  4. WCF服务寄宿IIS与Windows服务 - C#/.NET

    WCF是Windows平台下程序间通讯的应用程序框架.整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择.wcf程序的运行 ...

  5. WCF服务寄宿IIS时.SVC文件无法浏览的解决办法

    在IIS中托管服务和经典的ASMX Web服务托管相似,需要在IIS下创建虚拟目录,并提供一个.svc文件和Web.config配置文件.另外,托管时,服务的基地址必须与.svc文件的地址相同. 一. ...

  6. wcf部署,通过IIS寄宿服务(net.tcp),免svc文件。

    1.新建一个网站 2.在网站中新建一个应用程序(名称为WcfServicesForeBayLS) 3.在应用程序高级设置中,新增协议net.tcp 高级设置->行为->已启用协议-> ...

  7. WCF部署:让IIS有权限访问证书文件

    默认情况下,只有所有者和"系统"帐户才可以访问证书的私钥文件. 1. 证书的私钥文件在计算机上的存储位置?    Windows xp存放在:C:\Documents and Se ...

  8. [转]如何将WCF服务发布到IIS中去VS2010版

    本文转自:http://www.cnblogs.com/zhangliangzlee/archive/2012/08/29/2661589.html 上一遍我转载了别人的的帖子,如何在VS2010中去 ...

  9. Nancy 寄宿IIS

    一:简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方 ...

最新文章

  1. 程序分析的一些概念总结
  2. java mapreduce编程_Hadoop实验——MapReduce编程(1)
  3. debian 下配置common lisp环境
  4. 如何跟程序员谈一场没有Bug的恋爱
  5. Linux下MySQL忘记root密码及解决办法
  6. Facebook 开源 Instagram 的Python 代码静态安全分析工具 Pysa
  7. 实现日志文件直接导入数据库
  8. hdu2586 lca倍增法
  9. EDI 电子数据交换(Electronic data interchange,缩写EDI)
  10. 给非天才准备的 GRE 单词背诵方案
  11. aardio - API调用分析
  12. Redis 核心知识——01
  13. 哈哈哈哈,16 岁高中生开发「粤语编程」项目,在 GitHub 火了!
  14. FreeRTOS 队列管理
  15. Springboot集成第三方登录(facebook,linkedin,github)
  16. KDD‘20 | 如何建模互联网水军的对抗行为?
  17. Eclipse无法加载插件解决办法
  18. 内控遇到的问题及解决方法
  19. 专业音视频播放器:Elmedia Video Player Pro mac中文版
  20. datastage教程

热门文章

  1. Centos修改文件打开数限制
  2. 点云插值:三维平面参数确定-不共线三点的平面方程
  3. 安卓代码迁移:Make.exe: *** [***.o]Error 1
  4. mwArray与C++接口
  5. Vue采用input实现文件上传与删除
  6. [转载]Token原理以及应用
  7. 授人以鱼不如授人以渔——CPU漏洞的Symantec解决之道
  8. hdu 5384 Danganronpa(字典树)
  9. iOS沙盒路径的查看和使用
  10. ospf-cost-FR选路实验