Azure 上で WCF と連携するように SSL をセットアップする手順は何ですか?
質問
Azure 上の WCF で動作するように SSL をセットアップするために実行した手順を投稿してください。
私は私のものを持っています 有効な証明書がアップロードされました 成功しました(cspackを使用する) を追加し、サイトの残りの部分で動作していましたが、それを追加した後、以前は動作していた WCF サービスが動作しなくなってしまいました。(Silverlight に返される 404 エラーだけが表示されますが、これはあまり役に立ちません。より良いロギングを思いついた人に賛成票を投じて、私も問題の診断に役立てることができます!)
この構成でさまざまなバリエーションを試してみました。
<system.serviceModel>
<!--start added for SSL-->
<bindings>
<basicHttpBinding>
<binding name="SecureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<!--end added for SSL-->
<behaviors>
<!--start added for SSL-->
<endpointBehaviors>
<behavior name="DisableServiceCertificateValidation">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<!--start added for SSL-->
<serviceBehaviors>
<behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<!-- certificate checking removed -->
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior"
name="Silverheat.Cloud_WebRole.API.DataService">
<!--<endpoint address="" binding="basicHttpBinding" contract="Silverheat.Cloud_WebRole.API.DataService" />-->
<endpoint bindingConfiguration="SecureBasicHttpBinding"
behaviorConfiguration="DisableServiceCertificateValidation"
address="" binding="basicHttpBinding"
contract="Silverheat.Cloud_WebRole.API.DataService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
残念ながら、これをデバッグして詳細情報を取得するのは非常に困難です。ライブ サーバーで使用する場合のように、リモートで構成をステップ実行してデバッグすることができないためです。 バインディングタグに問題があります デバッグ時 (ただしライブではない)。
ご協力とご関心をいただきありがとうございます!
解決
おお!生きてる!機能しています!!
デバッグではまだ動作しません (セキュリティ例外) ですが、次のリリースまではこれで我慢します。
機能した構成は次のとおりです。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SecureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior"
name="Silverheat.Cloud_WebRole.API.DataService">
<endpoint bindingConfiguration="SecureBasicHttpBinding"
address="" binding="basicHttpBinding"
contract="Silverheat.Cloud_WebRole.API.DataService" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
(最終的に機能させたのは「mexHttpsBinding」だったと思います。ただし、既に構成されている後になぜメタデータが必要なのかは完全には理解できませんが、本の話に戻ると思います)
WCF で何らかのログ記録を有効にする方法をまだ知りたいのですが、この素晴らしいサイトをもう少し調べてみると、きっと答えが見つかると思います。
所属していません StackOverflow