教你使用WCF Address配置文件
經(jīng)過長(zhǎng)時(shí)間學(xué)習(xí)WCF,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。一個(gè)要和服務(wù)端通訊的客戶端要做的第一件事情,就是搞清數(shù)據(jù)要發(fā)給誰(shuí)?目的地在哪?
#T#而WCF Address正是通過一個(gè)Uri來唯一標(biāo)示一個(gè)WCF的終節(jié)點(diǎn)(EndPoint)的,它標(biāo)示了消息發(fā)送的目的地。在WCF數(shù)據(jù)通訊中,它解決了服務(wù)在哪里的問題。如何在配置文件中指定WCF Address在配置文件中,有兩種方式可以指定WCF Address,一種是絕對(duì)地址方式,另外是相對(duì)地址方式,分別如下:
絕對(duì)地址
- <host>
- <baseAddresses>
- <addbaseAddressaddbaseAddress="http://localhost:8731/"/>
- </baseAddresses>
- </host>
- <endpointaddressendpointaddress="http://localhost:8731/Service"binding="basicHttpBinding"contract="Wcf_Address_Config.IService1"></endpoint>
相對(duì)地址
- <host>
- <baseAddresses>
- <addbaseAddressaddbaseAddress="http://localhost:8731/"/>
- </baseAddresses>
- </host>
- <endpointaddressendpointaddress="Service1"binding="basicHttpBinding"contract="Wcf_Address_Config.IService1"></endpoint>
在網(wǎng)上有人說絕對(duì)地址是通過將httpGetEnabled設(shè)置為true,并且設(shè)置httpGetUrl為絕對(duì)地址是在設(shè)置endPoint的說法有些不準(zhǔn)確,因?yàn)樵赪CF中有兩種地址,一種是訪問endPoint時(shí)候用到地址,另外一種是服務(wù)描述的地址,服務(wù)描述在wcf中被稱作serviceMetadata,通過它能夠產(chǎn)生代理類,比如,我們做如下的設(shè)置:
- <serviceMetadatahttpGetEnabledserviceMetadatahttpGetEnabled="True"httpGetUrl="http://localhost:8731/Service"/>
只代表在http://localhost:8731/Service/?wsdl上能找到服務(wù)描述,可以通過http://localhost:8731/Service/?wsdl生成代理類,而不是將endPoint的地址設(shè)置為了http://localhost:8731/Service,這點(diǎn)一定要注意,不要受有些說法的誤導(dǎo)。