Проблема с Silverlight и защищенной службой WCF

#wcf #security #silverlight-4.0

#wcf #Безопасность #silverlight-4.0

Вопрос:

У меня есть проект службы WCF, определенный в моем решении Silverlight. Решение состоит из трех проектов.

  • Приложение mysilverlightприложение [приложение Silverlight]
  • Приложение mysilverlightприложение.Web [веб-проект, в котором он размещен]
  • MyWCFService

Я хочу установить безопасное соединение между приложением Silverlight и службой WCF, поэтому я включился wsHttpBinding на стороне службы, отредактировав файл web.config проекта службы следующим образом:

 <services>
    <service name="ExternalWcfService.extService"
        behaviorConfiguration="ExternalWCF">
        <endpoint address="" binding="wsHttpBinding"
            contract="ExternalWcfService.IextService"/>
        <endpoint address="mex" binding="mexHttpBinding" 
            contract="IMetadataExchange"/>
    </service>
</services>
  

Когда я добавляю ссылку на эту службу в SL-клиенте, я не получаю никаких записей, сделанных в ServiceReferences.ClientConfig файле в приложении Silverlight. Почему это так? И затем, когда я запускаю приложение, я получаю сообщение об ошибке, подобное этому:

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт ‘ExternalWCFService.IextService’ в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не был найден файл конфигурации или что в элементе client не удалось найти элемент конечной точки, соответствующий этому контракту.

У меня есть silverlight.config файл в корневой папке Silverlight. Почему конечная точка не создается в проекте SL?

Ответ №1:

Я думаю, вам нужно вручную скопировать сгенерированный файл в проект Silverlight. Это должно быть в вашем проекте MyWCFService. Я помню, что мне приходилось делать это раньше, но это было не для того же самого, а для стандартной конечной точки веб-сервиса.

Ответ №2:

Я думаю, что я понял это. По-видимому, Silverlight не может использовать службу, настроенную с помощью wsHttpBinding. Это должна быть только привязка BasicHttpBinding! Я изменил привязку на basic, и моя конечная точка была добавлена в ServiceReferences.Файл ClientConfig, когда я обновил свою ссылку.

Странно!!! почему Silverlight не поддерживает кодирование по проводам?