IIS 默認綁定 機械設置

默認的Endpoints

在第一章中創建ProductsSerice 服務時,你並未在web.config中設置任何端點和綁定信息。但是,當宿主環境(IIS)啓動該服務時,IIS基於HTTP傳輸協議和虛擬文件的邏輯 地址(URL)自動創建了默認的端點。事實上,IIS調用了ServiceHost類中AddDefaultEndpoints方法生產了該端點的詳細內 容。

AddDefaultEndpoints方法 根據服務包含契約的基本地址添加端點。舉例來說,假設服務的基本地址是http://localhost/ProductsService,並且該服務的 服務契約是Products.IProductsService。 AddDefaultEndpoints將爲該服務創建一個BasicHttpBinding綁定,其邏輯地址將爲基本地址加svc的全名(http://localhost/ProductsService/*.svc)。如果服務實現類實現了兩個服務契 約,AddDefaultEndpoints將添加兩個端點,每個契約對應一個端點。類似地,如果一個服務設置了兩個基本地址而且實現了兩個服務契 約,AddDefaultEndpoints將添加4個端點。

那麼AddDefaultEndpoints 是如何準確地選擇哪個綁定?比如HTTP默認將使用BasicHttpBinding,AddDefaultEndpoints是如何做到這一點呢?它爲什麼不選擇WSHttpBinding?原因在於,在machine.config文件中保存了對應的關

<system.ServiceModel>
...
<protocolMapping>
<clear/>
<addscheme="http" binding="basicHttpBinding" bindingConfiguration="" />
<addscheme="net.tcp" binding="netTcpBinding" bindingConfiguration="" />
<addscheme="net.pipe" binding="netNamedPipeBinding" bindingConfiguration="" />
<addscheme="net.msmq" binding="netMsmqBinding" bindingConfiguration="" />
</protocolMapping>
...
</system.ServiceModel>

 


發佈了45 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章