#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 не поддерживает кодирование по проводам?