Почему мой клиент Silverlight не находит файл clientaccesspolicy при переключении на SSL? - PullRequest
1 голос
/ 04 августа 2009

Я разработал клиент Silverlight, который отлично работал на обычном HTTP, но теперь, когда я пытаюсь заставить его работать на SSL, я получаю следующую ошибку:

Произошла ошибка при попытке сделать запрос к URI [URL удален для безопасности] Это может быть связано с попыткой доступа к службе междоменным способом без соответствующей междоменной политики или политики, которая не подходит для сервисов SOAP. Вам может потребоваться связаться с владельцем сервиса, чтобы опубликовать файл междоменной политики и убедиться, что он позволяет отправлять HTTP-заголовки, связанные с SOAP. Эта ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibleToAttribute. Пожалуйста, смотрите внутреннее исключение для более подробной информации.

Я пользуюсь следующей клиентской политикой:

<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="http://*"/>
        <domain uri="https://*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Есть идеи, что может вызвать эту ошибку?

Ответы [ 3 ]

1 голос
/ 05 марта 2013

Если вы запускаете приложение Silverlight в браузере, браузер может прервать соединение, если сертификат SSL не является доверенным. Если вы вручную перейдете к файлу clientaccesspolicy.xml (например, https://localhost/clientaccesspolicy.xml), вы можете добавить сертификат как доверенный в своем браузере.

1 голос
/ 05 августа 2009

Я думаю, что вам не хватает одного маленького элемента в вашей Политике клиентского доступа. allow-from http-request-headersheaders должно быть = "SOAPAction".

Попробуйте это.

<access-policy>  
   <cross-domain-access>    
     <policy>      
       <allow-from http-request-headers="SOAPAction">
          <domain uri="http://*"/>        
          <domain uri="https://*"/>
      </allow-from>      
      <grant-to>        
          <resource path="/" include-subpaths="true"/>      
      </grant-to>    
    </policy>  
  </cross-domain-access>
</access-policy>

Для дальнейшего ознакомления, прочитайте этот пост от Tim Heuer

0 голосов
/ 21 июня 2011

Это происходит потому, что когда вы отправляете запрос на ваш сайт по другому протоколу, файл clientaccesspolicy.xml. Он не загружен, проверьте в вашем браузере любой инструмент отладки, найдите этот файл и проверьте, что загружено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...