webHttpBinding
を使用してエンドポイントを公開し、WPF と ASP.NET アプリケーションの両方で消費されるWCF サービスがあります。すべてがうまく機能します。
現在、Windows Phone (WP7) からサービスを利用しようとしています。ただし、.NET Framework はまだ WP7 に完全に追いついていないため、System.ServiceModel.Web
名前空間が使用できwebHttpBinding
ず、WP7 では機能しません。
さて、私のサービスでは、 を に切り替えるwebHttpBinding
とbasicHttpBinding
、電話アプリケーションが動作します。
ただし、使用するために WPF および ASP.NET アプリケーションを作り直す必要はありませんbasicHttpBinding
。
webHttpBinding
WCF が複数のバインディングをサポートできることを理解しており、との両方のエンドポイントを公開するようにサービスを構成して実行しようとしましたbasicHttpBinding
。サービスは正常に起動しているようです。ただし、WPF および ASP.NET アプリケーションはアクセスできません。WP7 アプリケーションでサービス参照を作成しようとすると、次のメッセージが表示されます。
バインド インスタンスは、リッスン URI 'http://localhost:1726/GeneralService.svc' に既に関連付けられています。2 つのエンドポイントが同じ ListenUri を共有する場合は、同じバインディング オブジェクト インスタンスも共有する必要があります。競合する 2 つのエンドポイントは、AddServiceEndpoint() 呼び出し、構成ファイル、または AddServiceEndpoint() と構成の組み合わせで指定されました。
baseAddress
同僚と私は、 、address
、および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>