<?xml version="1.0" encoding="utf-8" ?>
<configuration> <!-- <system.ServiceModel> section --> <system.ServiceModel> <!-- services 元素包含應用中駐留的所有service的配置要求 --> <services> <!-- 每個服務的配置 屬性說明: name - 指定這個service配置是針對的那個服務,為一個實現了某些Contract的服務類的完全限定名 (名稱空間.類型名),ServiceHost載入一個服務后,會到配置文件中的<services>下找有沒有 name屬性跟服務匹配的<service>的配置 behaviorConfiguration - 指定在<serviceBehaviors>下的一個<behavior>的name,這個特定<behavior> 給這個service制定了一些行為,比如服務是否允許身份模擬--> <service name="名稱空間.類型名" behaviorConfiguration="behavior名"> <!-- 每個服務可以有多個Endpoint,下面<endpoint>元素對每個Endpoint分別進行配置 屬性說明: address - 指定這個Endpoint對外的URI,這個URI可以是個絕對地址,也可以是個相對于baseAddress的 相對地址。如果此屬性為空,則這個Endpoint的地址就是baseAddress binding - 指定這個Endpoint使用的binding,這個banding可以是系統預定義的9個binding之一, 比如是basicHttpBinding,也可以是自定義的customBinding。binding決定了通訊的類型、 安全、如何編碼、是否基于session、是否基于事務等等 contract - 指定這個Endpoint對應的Contract的全限定名(名稱空間.類型名),這個Contract應該被 service元素的name指定的那個service實現 bindingConfiguration - 指定一個binding的配置名稱,跟<bindings>下面同類<binding>的name匹配 name - Endpoint的名稱,可選屬性,每個Contract都可以有多個Endpoint,但是每個Contract對應的 多個Endpoint名必須是唯一的--> <endpoint address="URI" binding="basicHttpBinding" contract="Contract全限定名" bindingConfiguration="binding名" name=""> <!-- 用戶定義的xml元素集合,一般用作SOAP的header內容--> <headers> <!-- 任何xml內容 --> </headers> <identity> <!-- <identity>下的元素都是可選的--> <userPrincipalName></userPrincipalName> <servicePrincipalName></servicePrincipalName> <dns></dns> <rsa></rsa> <certificate encodedValue=""></certificate> <!-- <certificateReference>的屬性都是可選的 屬性說明: storeName - 證書的存儲區(qū),可能值為:AddressBook,AuthRoot,CertificateAuthority Disallowed,My,Root,TrustedPeople,TrustedPublisher storeLocation - 證書存儲位置,可能值為:CurrentUser,LocalMachine--> <certificateReference storeName="" storeLocation=""> </certificateReference> </identity> </endpoint> <host> <baseAddresses> <!-- 在此可以定義每種傳輸協議的baseAddress,用于跟使用同樣傳輸協議Endpoint定義的相對地 址組成完整的地址,但是每種傳輸協議只能定義一個baseAddress。HTTP的baseAddress同時是service 對外發(fā)布元數據的URL--> <add baseAddress="http://address" /> </baseAddresses> <timeouts></timeouts> </host> </service> </services> <bindings> <!-- 指定一個或多個系統預定義的binding,比如<basicHttpBinding>,當然也可以指定自定義的customBinding, 然后在某個指定的binding下建立一個或多個配置,以便被Endpoint來使用這些配置 --> <basicHttpBinding> <!-- 某一類的binding的下面可能有多個配置,binding元素的name屬性標識某個binding--> <binding name="binding名"> </binding> </basicHttpBinding> </bindings> <!-- 定義service和Endpiont行為--> <behaviors> <!-- 定義service的行為--> <serviceBehaviors> <!-- 一個或多個系統提供的或定制的behavior元素 屬性說明: name - 一個behavior唯一標識,<service>元素的behaviorConfiguration屬性指向這個name--> <behavior name=""> <!-- 指定service元數據發(fā)布和相關信息 屬性說明: httpGetEnabled - bool類型的值,表示是否允許通過HTTP的get方法獲取sevice的WSDL元數據 httpGetUrl - 如果httpGetEnabled為true,這個屬性指示使用哪個URL地址發(fā)布服務的WSDL, 如果這個屬性沒有設置,則使用服務的HTTP類型的baseAddress后面加上?WSDL--> <serviceMetadata httpGetEnabled="true" httpGetUrl="http://URI:port/address" /> </behavior> </serviceBehaviors> <!-- 定義Endpiont的行為--> <endpointBehaviors> </endpointBehaviors> </behaviors> <!-- 包含客戶端跟服務端連接使用到的Endpoint的配置 --> <client> <!-- 每個客戶端Endpoint設置 屬性說明: address - 對應到服務端這個Endpoint的address binding - 指定這個Endpoint使用的binding,這個banding可以是系統預定義的9個binding之一, 比如是basicHttpBinding contract - 指定這個Endpoint對應的Contract的全限定名(名稱空間.類型名) name - Endpoint的配置名,客戶端代理類的構造方法中的endpointConfigurationName對應到這個name bindingConfiguration - 指定客戶端binding的具體設置,指向<bindings>元素下同類型binding的name --> <endpoint address="URI" binding="basicHttpBinding" bindingConfiguration="binding名" contract="Contract全限定名" name="endpoint配置名" /> </client> </system.ServiceModel> </configuration> |
|