同一WCF服务应用程序中的WCF wsHttpBinding和BasicHttpBinding
我被告知wsHttpBinding不支持仍然需要使用旧版本SOAP的旧客户端。我想在同一个WCF服务应用程序中添加一个BasicHttpBinding端点,以便客户端可以根据其运行的技术使用任一端点。我不知道他们每个人的地址是什么。默认wsHttpBinding没有地址集。BasicHttpBinding端点的地址应该是什么?wsHttpBinding的地址不应该是(以我为例)?在WCF中,您有一个基址和一个enpoint地址,在您的情况下,您可以这样做:同一WCF服务应用程序中的WCF wsHttpBinding和BasicHttpBinding,wcf,Wcf,我被告知wsHttpBinding不支持仍然需要使用旧版本SOAP的旧客户端。我想在同一个WCF服务应用程序中添加一个BasicHttpBinding端点,以便客户端可以根据其运行的技术使用任一端点。我不知道他们每个人的地址是什么。默认wsHttpBinding没有地址集。BasicHttpBinding端点的地址应该是什么?wsHttpBinding的地址不应该是(以我为例)?在WCF中,您有一个基址和一个enpoint地址,在您的情况下,您可以这样做: <service name="W
<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)客户端
这里有两件事需要考虑:< /P>
- 如果您在IIS中托管(或作为IIS7的一部分),则无法设置基址-您的服务的基址将是
文件所在的虚拟目录。不过,您仍然可以设置相对地址MyService.svc
- 如果您自己托管,通常会在配置中添加基址,这样您就不用一直拼出整个地址(但如果您愿意,您可以这样做)
localhost
计算机上的名为MyApp
的虚拟目录中有MyService.svc
,然后使用以下配置:
<service name="MyService" behaviorConfiguration="Default">
<endpoint
address="wsHttp"
binding="wsHttpBinding"
contract="IMyService" />
<endpoint
address="basic"
binding="basicHttpBinding"
contract="IMyService" />
</service>
您的新wsHttp驱动服务将可在以下位置访问:
http://localhost/MyApp/MyService.svc/basic
http://localhost/MyApp/MyService.svc/wsHttp
http://localhost:8185/Services/basic
http://localhost:8185/Services/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>
您的新wsHttp驱动服务将可在以下位置访问:
http://localhost/MyApp/MyService.svc/basic
http://localhost/MyApp/MyService.svc/wsHttp
http://localhost:8185/Services/basic
http://localhost:8185/Services/wsHttp
您可以为每个传输定义一个基址,例如,一个用于http://,一个用于net.tcp://等等
当然,如果确实需要,还可以在
元素中为每个服务端点定义完整的地址-这为您提供了完全的灵活性(但仅适用于自托管场景)
Marc是否可以让您的wsHttp端点指向根目录,然后让basicHttp端点的地址指向root\basic?