日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WCF 非http寄宿IIS

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF 非http寄宿IIS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要

從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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。