none
Проблема с Silverlight и WCF RRS feed

  • Вопрос

  • Возникла проблема создания клиента для WCF сервиса.

    Решение состоит из нескольких проектов - WCF Library, WCF Host, WCF Client(Для Windows-приложений). Все работает отлично. Появилась необходимость использовать сервис в клиенте Silverlight 4. Создал приложение Silverlight, Добавил сервис через Add Service Reference.

    Теперь, при вызове какого-либо метода сервиса вызывается исключение:

    CommunicationException

    Произошла ошибка при попытке создать запрос к URI "http://localhost:8080/TranslationService/basic". Это могло быть вызвано попыткой междоменного доступа к службе без наличия приемлемой междоменной политики или с политикой, непригодной службам SOAP. Может понадобиться связаться с владельцем службы для публикации файла междоменной политики и убедиться в том, что она позволяет отправлять заголовки HTTP, связанные с SOAP. Эта ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute. Подробности см. во внутреннем исключении.

    Пробовал экспериментировать с файлами crossdomain.xml и clientaccesspolicy.xml, но ничего не изменилось, может я что-то не так делал?

    Содержимое crossdomain.xml:

    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
      <allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>
    

    Содержимое  clientaccesspolicy.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="*">
            <domain uri="*"/>
          </allow-from>
          <grant-to>
            <resource include-subpaths="true" path="/"/>
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>
    
    

     Содержимое  ServiceReferences.ClientConfig:

    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_ITranslationCore" maxBufferSize="2147483647"
                        maxReceivedMessageSize="2147483647">
                        <security mode="None" />
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:8080/TranslationService/basic"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITranslationCore"
                    contract="Service.ITranslationCore" name="BasicHttpBinding_ITranslationCore" />
            </client>
        </system.serviceModel>
    </configuration>
    
    

    Как можно соединить Silverlight и WCF?

    15 сентября 2011 г. 7:30

Ответы

Все ответы