Каковы шаги по настройке SSL для работы с WCF в Azure?
Вопрос
Опубликуйте действия, которые вы предприняли для настройки SSL для работы с WCF в Azure.
У меня есть мой действительный сертификат загружен успешно (используя cspack) и работал с остальным сайтом, но после его добавления мой ранее работавший сервис WCF перестал работать.(Все, что я получаю, — это ошибку 404 при возврате в Silverlight, что не очень полезно.Голосуйте за того, кто предложит лучшее ведение журнала, которое я тоже мог бы сделать, чтобы помочь диагностировать проблему!)
Я пробовал много вариантов этой конфигурации:
<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, но я еще немного покопаюсь на этом замечательном сайте и уверен, что найду ответ.