歡迎您光臨本站 註冊首頁

將使用netTcp綁定的WCF服務寄宿到IIS7上全記錄

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

將使用netTcp綁定的WCF服務寄宿到IIS7上全記錄

摘要
在項目開發中,我們可能會適時的選擇http或者tcp綁定的wcf服務,可以使用控制台來託管服務,也可以使用IIS來承載服務,由於IIS本身對於請求和異常的處理能力,使得我們可以省去很多開發精力而成為託管服務的首選,之前我做的WCF服務時託管在控制台的,今天摸索了一下採用tcp綁定的wcf託管到IIS7的過程,分享一下,希望能幫助到想移植服務到IIS的朋友。實例
依然是以一個服務作為例子展開,我們新建一個WCF Application,默認有一個簡單的服務Service1.svc,  http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif代碼
public
interface IService1
{

string GetData(int value);
}
public
class Service1 : IService1
{
public
string GetData(int value)
{
return
string.Format("You entered: {0}", value);
}
}
web.config的配置非常簡單,自動生成不作介紹。


開始移植
接下來我們需要將這個普通的服務移植Host到IIS上,
第一.首先需要更改web.config文件,將服務配置為net.tcp綁定
配置文件如下:   http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif代碼 <system.serviceModel>
<bindings>
<netTcpBinding>
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign"
/>
<message clientCredentialType="Windows"
/>
</security>
</binding>
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="MyBehavior" name="WCFService.Service1">
<endpoint address="" binding="netTcpBinding" contract="WCFService.IService1" bindingConfiguration="netTcpBindConfig"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"
></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior"
>
<serviceMetadata/>
<serviceDebug includeExceptionDetailInFaults="true"
/>
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>




  
第二,我們需要將WCF Application這個項目的屬性更改一下,方便開發時的訪問服務,右擊服務的項目屬性,切換到WEB頁面
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_8.png
在創建虛擬目錄時也許VS會提示需要安裝IIS6的一些組件,那麼我們按照提示打開」windows的更新安裝「
要將WCF的tcp綁定方式的服務host在IIS上,首先你需要啟用這個功能
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_2.png
其次,需要安裝IIS6的兼容性和管理工具
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_3.png
等這些都做完之後你可以瀏覽一下服務了,但是有可能會遇到一個錯誤提示:
處理程序「svc-Integrated」在其模塊列表中有一個錯誤模塊「ManagedPipelineHandl…
出現這個問題你需要確認兩個問題,第一個是SVC的文件請求是哪個DLL來處理的,
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_4.png
第二個是確認等IIS7全部配置完畢后,需要重新將asp.net4.0註冊到IIS上
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb.png
在vs2010中再瀏覽一下服務http://localhost/WCFService/Service1.svc,發現已經OK了
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_1.png
於是,我們可以正常引用並使用這個服務了
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_5.png
引用服務完成後,調用的效果是:
http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_9.png

源代碼:http://files.cnblogs.com/wengyuli/WCFHostToIIS.rar

[火星人 ] 將使用netTcp綁定的WCF服務寄宿到IIS7上全記錄已經有658次圍觀

http://coctec.com/docs/service/show-post-2597.html