2009-05-12 3 views
1

Я пытаюсь получить доступ к службе https wcf из silverlight. clientaccesspolicy помещается в корень службы, и я подтвердил его с помощью silverlightspy, показав его действительным и разрешенные вызовы. Я могу вызвать этот веб-сервис успешно с настольного клиента, но при попытке вызвать из silverlight он выдает сообщение об ошибке, вызывающее .... сбой службы может быть перекрестным доменом poliecy и т. Д. Недействителен .... любые идеи? ?? здесь политика домена крест службы тоже:вызов https wcf службы от silverlight

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

Не видя, что крест политики домена ... – Nate

+0

извините! его добавлено сейчас. –

ответ

1

Если сервис и Silverlight приложение подаются с тем же сайта, и вы используете Silverlight 4, вы можете сделать это без поперечного файла политики домена по:

  • Доступ к SilverLight приложения через HTTPS
  • Использование относительного адреса в файле ServiceReferences.ClientConfig для доступа к службе
  • Использование безопасности режима транспорта в службе BasicHttpBinding для службы.

Вот пример ServiceReferences.ClientConfig:

<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IMyService" maxBufferSize="2147483647" 
        maxReceivedMessageSize="2147483647"> 
        <!--Transport mode security (setup the same way on the server):--> 
        <security mode="Transport" /> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 
     <client> 
      <!--Relative address (This is the part that requires SL4):--> 
      <endpoint address="../Services/MyService.svc" 
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyService" 
       contract="MyApplication.MyService" name="BasicHttpBinding_IMyService" /> 
     </client> 
    </system.serviceModel> 
</configuration> 
Смежные вопросы