[英]WCF wsHttpBinding and BasicHttpBinding in same WCF Service Application
我被告知wsHttpBinding不支持仍需要使用舊版SOAP的舊客戶端。 我想在同一個WCF服務應用程序中添加一個BasicHttpBinding端點,以便客戶端可以使用任一端點,具體取決於它們正在運行的技術。 我對每個人使用的地址感到困惑。 默認的wsHttpBinding沒有設置地址。 BasicHttpBinding端點的地址應該是什么? 不應該是wsHttpBinding的地址(對於我的例子) http://localhost/WcfService1/Service1.svc ?
這里有兩件事你需要考慮:
如果您在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
之后的任何內容)命名為您喜歡的名稱 - 只需確保它們彼此不同即可。
在IIS中托管 - > .svc文件的位置(虛擬目錄)將成為您的基本地址。
如果您在控制台應用程序或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>
元素內定義完整的地址 - 這為您提供了全面的靈活性(但僅適用於自托管方案)。
渣
在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)客戶端
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.