我有一个 WCF 服务,它使用以下方式公开端点webHttpBinding
并由 WPF 和 ASP.NET 应用程序使用。一切都很好。
我现在尝试从 Windows Phone (WP7) 使用该服务。然而,由于 .NET Framework 还没有完全赶上 WP7,System.ServiceModel.Web
命名空间不可用,导致webHttpBinding
在 WP7 中不起作用。
现在,在我的服务上,如果我切换webHttpBinding
出去一个basicHttpBinding
,电话应用程序可以运行。
我不想重新编写我的 WPF 和 ASP.NET 应用程序才能使用basicHttpBinding
though.
我了解 WCF 能够支持多个绑定,并且我尝试配置和运行该服务,以便它公开两个绑定的端点webHttpBinding
and basicHttpBinding
。该服务似乎启动良好。但是,WPF 和 ASP.NET 应用程序无法访问它。当我尝试在 WP7 应用程序中创建服务引用时,我收到以下消息:
绑定实例已关联到侦听 URI
'http://localhost:1726/GeneralService.svc'。如果两个端点想要
共享相同的 ListenUri,它们也必须共享相同的绑定对象
实例。两个冲突的端点要么在中指定
AddServiceEndpoint() 调用,在配置文件中,或组合
AddServiceEndpoint() 和配置。
我和一位同事尝试过对baseAddress
, address
, and listenUri
属性没有任何运气。我们现在正处于反复试验的阶段,但事实证明这并不是非常有效。
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="generalBasic" />
</basicHttpBinding>
<webHttpBinding>
<binding name="general" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="MyProject.GeneralService">
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="generalBasic"
contract="MyProject.Contracts.IGeneralService" />
<endpoint behaviorConfiguration="web"
binding="webHttpBinding"
bindingConfiguration="general"
contract="MyProject.Contracts.IGeneralService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:1726/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
只需为基本端点或 webhttp 端点指定一个值来指定地址属性,以区分其地址。前任:
<endpoint behaviorConfiguration="web" address="rest" binding="webHttpBinding" bindingConfiguration="general" contract="MyProject.Contracts.IGeneralService" />
应该可以解决你的问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)