Доступ к кросс-схеме Silverlight для jpegs запрещен - PullRequest
3 голосов
/ 27 октября 2010

У меня есть приложение Silverlight4, которое я запускаю по https, развернутое в Azure. Все работает, кроме одного небольшого глюка. У меня есть контент в виде эскизов jpg и связанных zip-файлов с расширением .gld. Предполагается, что мое приложение отображает эскизы и позволяет пользователям загружать связанные файлы .gld / zip.

Загрузка работает нормально, но миниатюры не будут отображаться в моем пользовательском интерфейсе. Я получаю AG_E_NETWORK_ERROR от моего обработчика ImageFailed. У меня есть файл clientaccesspolicy.xml в корне моего домена cdn. Fiddler не показывает Silverlight доступ к этому файлу.

Вот файл clientaccesspolicy.xml:

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

Я озадачен тем, как Silverlight может получить доступ к загружаемому контенту, но не к файлам изображений. Приложение выбирает миниатюры, если я развертываю их в хранилище BLOB-объектов в Azure (с тем же файлом clientaccesspolicy.xml в папке $ root), но было бы идеально, если бы я мог продолжить ту же файловую структуру, которая уже существует в моем cdn провайдер.

Все отображается отлично, если приложение Silverlight работает на http, а не на https.

Заранее спасибо за любые идеи!

Майкл Коннер

Ответы [ 6 ]

1 голос
/ 30 октября 2010

спасибо за все предложения - перепробовал их все - все равно не повезло, к сожалению.К сожалению, событие ImageFailed для растрового изображения не дает подробностей.Я думаю, что мы, возможно, столкнемся с кросс-схемным ограничением для файлов изображений.

0 голосов
/ 12 февраля 2014

Я знаю, что это очень старый вопрос, но если кто-то все еще застрял в подобной ситуации, Silverlight не разрешает кросс-схему доступа.Вам понадобится либо http на обоих концах, либо https.Из MSDN: Ограничения доступа к URL в Silverlight

  • Если вы хотите разместить свое приложение Silverlight и хранить изображения на разных серверах, ограничения следующие: Вы не можетехраните свои изображения на сайте, который использует схему HTTPS, если вы размещаете свое приложение на HTTP-сайте (кросс-схема).

  • Вы можете хранить свои изображения на междоменном сайтепока схема
    этого междоменного сайта совпадает со схемой
    сайта, на котором размещено ваше приложение.

  • Приложения Silverlight, работающие в Windows, не могут хранить изображенияна сервере в зоне локальной интрасети, если приложение было загружено
    из зоны Интернета (кросс-зона), за исключением случаев, когда целевой домен
    localhost.

  • Youможно перенаправить на другой URL-адрес изображения, если в нем используется та же схема
    .

0 голосов
/ 28 октября 2010

или попробуйте это:

<allow-from http-request-headers="*">
0 голосов
/ 28 октября 2010

попробуйте реализовать больше отладочных выходных данных - возможно, так:

Вы можете перехватить ошибку.BitmapImage, Image, ImageBrush, MultiScaleImage имеют событие ImageFailed.Просто установите обработчик события на него.

0 голосов
/ 28 октября 2010

Проверьте URI, используемый в Fiddler или тому подобное, проверьте изображения используют https

0 голосов
/ 28 октября 2010

В строке 7 отсутствует ">".

...