協(xié)定需要會(huì)話,但是綁定“BasicHttpBinding”不支持它或者因配置不正確而無(wú)法支持它
更新時(shí)間:2012年12月29日 10:41:41 作者:
在IIS7及以上版本服務(wù)器中提供了基于WAS的無(wú).SVC文件的WCF服務(wù)激活功能,能夠提供基于HTTP和非HTTP協(xié)議的訪問(wèn),通過(guò)添加Windows Server AppFabric可以更方便的管理WCF服務(wù)
對(duì)于無(wú).SVC文件的配置只需要指定以.svc結(jié)尾的相對(duì)地址和服務(wù)實(shí)現(xiàn)的完整名稱即可??蓡?wèn)題恰恰出在這里,之前需要在<system.serviceModel>
<services>
<host>
<baseAddresses>
<add baseAddress="http://localhost:10045/TestService/TestService" />
<add baseAddress="net.tcp://localhost:10046/TestService/TestService" />
</baseAddresses>
</host>
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="WsHttpSession" contract="xxx.xxx.IConnectService" />
</services>
這種配置方式對(duì)于特定的協(xié)議明確的指定了終結(jié)點(diǎn)的binding,但是用無(wú).svc配置方式的終結(jié)點(diǎn)是由AppFabric生成的不需要在配置文件中配置,對(duì)于綁定只提供了基于界面配置的方式并且沒(méi)有明確指定綁定的具體類型。像如上這個(gè)問(wèn)題就是因?yàn)殚_(kāi)發(fā)的WCF需要會(huì)話,而基于HTTP協(xié)議的默認(rèn)綁定BasicHttpBinding不支持會(huì)話所致,那么如何解決這個(gè)問(wèn)題,只需要修改http協(xié)議的默認(rèn)綁定即可。
解決方法:
在web.config配置文件中找到<system.serviceModel>段。
在<system.serviceModel></system.serviceModel>之間加上
<protocolMapping>
<add scheme="http" binding="wsHttpBinding" bindingConfiguration="WsHttpSession"/>
</protocolMapping>
協(xié)議映射配置,這樣服務(wù)器在接收到http協(xié)議的請(qǐng)求時(shí) 會(huì)按照所設(shè)置的binding進(jìn)行處理而不再是默認(rèn)binding了。
復(fù)制代碼 代碼如下:
<services>
<host>
<baseAddresses>
<add baseAddress="http://localhost:10045/TestService/TestService" />
<add baseAddress="net.tcp://localhost:10046/TestService/TestService" />
</baseAddresses>
</host>
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="WsHttpSession" contract="xxx.xxx.IConnectService" />
</services>
這種配置方式對(duì)于特定的協(xié)議明確的指定了終結(jié)點(diǎn)的binding,但是用無(wú).svc配置方式的終結(jié)點(diǎn)是由AppFabric生成的不需要在配置文件中配置,對(duì)于綁定只提供了基于界面配置的方式并且沒(méi)有明確指定綁定的具體類型。像如上這個(gè)問(wèn)題就是因?yàn)殚_(kāi)發(fā)的WCF需要會(huì)話,而基于HTTP協(xié)議的默認(rèn)綁定BasicHttpBinding不支持會(huì)話所致,那么如何解決這個(gè)問(wèn)題,只需要修改http協(xié)議的默認(rèn)綁定即可。
解決方法:
在web.config配置文件中找到<system.serviceModel>段。
在<system.serviceModel></system.serviceModel>之間加上
復(fù)制代碼 代碼如下:
<protocolMapping>
<add scheme="http" binding="wsHttpBinding" bindingConfiguration="WsHttpSession"/>
</protocolMapping>
協(xié)議映射配置,這樣服務(wù)器在接收到http協(xié)議的請(qǐng)求時(shí) 會(huì)按照所設(shè)置的binding進(jìn)行處理而不再是默認(rèn)binding了。
相關(guān)文章
C#難點(diǎn)逐個(gè)擊破(4):main函數(shù)
貌似我是在寫(xiě)C#的學(xué)習(xí)筆記哦,不過(guò)反正可以利用這個(gè)機(jī)會(huì)來(lái)好好溫習(xí)下基礎(chǔ)知識(shí),這其中很多知識(shí)點(diǎn)都屬于平時(shí)視而見(jiàn)的小知識(shí)2010-02-02
C#實(shí)現(xiàn)大數(shù)字運(yùn)算的實(shí)例代碼
這篇文章介紹了C#實(shí)現(xiàn)大數(shù)字運(yùn)算的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10
C#簡(jiǎn)易人機(jī)對(duì)抗“石頭剪刀布”游戲的實(shí)現(xiàn)
本文主要介紹了C#簡(jiǎn)易人機(jī)對(duì)抗“石頭剪刀布”游戲的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C#使用Socket實(shí)現(xiàn)服務(wù)器與多個(gè)客戶端通信(簡(jiǎn)單的聊天系統(tǒng))
這篇文章主要介紹了C#使用Socket實(shí)現(xiàn)服務(wù)器與多個(gè)客戶端通信(簡(jiǎn)單的聊天系統(tǒng)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

