我被告知wsHttpBinding不支持仍需要使用較早版本的SOAP的較舊客戶端。我想在同一個WCF服務應用程序中添加一個BasicHttpBinding端點,以便客戶端可以根據他們運行的技術使用任一端點。我很困惑他們每個人的地址。默認的wsHttpBinding沒有地址集。 BasicHttpBinding端點的地址應該是什麼?不應該爲wsHttpBinding的地址(對於我的例子)http://localhost/WcfService1/Service1.svc?WCF wsHttpBinding和BasicHttpBinding在相同的WCF服務應用程序中
7
A
回答
16
有你需要在這裏考慮兩件事情:
如果您在IIS(或WAS作爲IIS7的一部分)中託管,則無法設置基址 - 您服務的基址將是
MyService.svc
文件所在的虛擬目錄。您仍然可以設置相對地址,但如果您是自主主機,您通常會在您的配置中添加基地址,因此您可以隨時自行解釋整個地址(但您可以 - 如果你希望這樣做)。
所以,如果你有你的MyService.svc
您localhost
機器上稱爲MyApp
一個虛擬目錄中,然後使用這個配置:
<service name="MyService" behaviorConfiguration="Default">
<endpoint
address="wsHttp"
binding="wsHttpBinding"
contract="IMyService" />
<endpoint
address="basic"
binding="basicHttpBinding"
contract="IMyService" />
</service>
那麼你的「舊式」 basicHttp服務將在到達:
http://localhost/MyApp/MyService.svc/basic
和新wsHttp驅動的服務將是可到達的:
http://localhost/MyApp/MyService.svc/wsHttp
你可以命名這些相對地址(.../MyApp/MyService.svc
之後的任何東西)任何你喜歡的東西 - 只要確保它們彼此不同即可。
在您的* .svc文件的IIS - >位置(虛擬目錄)中的主機成爲您的基地址。
如果你自託管控制檯應用程序或Windows NT服務中爲您服務,你要設置你的基地解決自己:
<services>
<service name="MyService" behaviorConfiguration="Default">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8185/Services/" />
</baseAddresses>
</host>
</service>
</services>
現在,在這種情況下,你的「舊式」 basicHttp服務將在到達:
http://localhost:8185/Services/basic
和新wsHttp驅動的服務將是可到達的:
http://localhost:8185/Services/wsHttp
您可以爲每個傳輸定義一個基地址,例如一個用於http://,一個用於net.tcp://等等。當然,如果你真的必須的話,你也可以在你的<endpoint>
元素中爲每個服務端點定義完整的地址 - 這給你全面的靈活性(但只適用於自託管場景)。
馬克
2
在WCF中你有一個基地址和enpoint地址,你的情況,你可以做這樣的事情:
<service name="WcfEndpoints.Service1" behaviorConfiguration="WcfEndpoints.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="new" binding="wsHttpBinding" contract="WcfEndpoints.IService1" />
<endpoint address="old" binding="basicHttpBinding" contract="WcfEndpoints.IService1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
注意,你需要的basicHttpBinding的端點額外的工作與舊(ASMX)工作客戶
相關問題
- 1. BasichttpBinding vs WCF的WSHttpBinding
- 2. WCF服務:WSHttpBinding
- 3. WCF服務的wsHttpBinding
- 4. WCF IIS託管的wsHttpBinding服務 - svcutil使用basicHttpBinding生成代理!
- 5. WCF服務具有的wsHttpBinding,SSL和TransportWithMessageCredential
- 6. WCF服務應用程序和WCF服務庫
- 7. 如何在構建於2.0的應用程序中使用WCF wsHttpBinding服務?
- 8. WCF REST服務的WCF服務應用程序(項目)或WCF服務(網站)
- 9. 無法使用phpclient的WCF wshttpBinding服務
- 10. XABP和WCF wsHttpBinding
- 11. 在同一Web應用程序中託管WCF服務和WebAPI
- 12. 使用WSHttpBinding調用WCF服務
- 13. Silverlight應用程序中的WCF服務
- 14. PhoneGap應用程序和WCF服務在不同的域
- 15. 使用basicHttpBinding安全WCF服務
- 16. 使用SoapClient與WCF服務(BasicHTTPBinding)
- 17. WCF服務應用程序或WCF服務庫?
- 18. 線程在WCF basicHttpBinding的
- 19. 在Windows服務中託管的WCF服務(basicHttpBinding)的WSDL URL
- 20. WCF和Web應用程序在同一臺服務器上
- 21. 我可以在WCF服務中使用wsHttpBinding和webHttpBinding嗎?
- 22. 在相同的目標位置發佈WCF服務和Web應用程序?
- 23. WCF應用程序和WCF服務庫瞭解
- 24. Windows窗體應用程序調用WCF服務和WCF服務調用另一個WCF服務
- 25. WCF服務庫和WCF服務應用程序之間的區別
- 26. 在IIS和Windows服務中承載相同的WCF服務
- 27. 在Web應用程序的AppDomain中使用Ninject和WCF服務?
- 28. WCF 4 Web服務中的UsernameToken和SSL - 但是使用basicHttpBinding
- 29. 在WCF服務應用程序或WCF服務庫中實現IErrorHandler
- 30. 從Silverlight應用程序同時調用WCF服務中的TimeoutException
是否有可能有你wsHttp端點點到根目錄下,然後讓basicHttp端點點至ROOT \基本的地址? – EbbnFlow 2012-06-19 19:10:10