3

我有一个在 https 上运行的 Silverlight4 应用程序,部署到 Azure。一切正常,除了一个小故障。我有 jpg 缩略图和扩展名为 .gld 的相关 zip 文件形式的内容。我的应用程序应该显示缩略图,并允许用户下载相关的 .gld/zip 文件。

下载工作正常,但缩略图不会显示在我的 UI 中。我从 ImageFailed 处理程序中得到 AG_E_NETWORK_ERROR。我的 cdn 域的根目录中确实有一个 clientaccesspolicy.xml 文件。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 如何访问可下载内容而不是图像文件感到困惑。如果我将缩略图部署到 azure 中的 blob 存储(在 $root 文件夹中具有相同的 clientaccesspolicy.xml 文件),该应用程序确实会拾取缩略图,但如果我可以继续我的 cdn 上已经存在的相同文件结构,那将是理想的提供者。

如果 Silverlight 应用程序在 http 而不是 https 中运行,一切都会完美显示。

提前感谢您的任何想法!

迈克尔·康纳

4

6 回答 6

1

感谢所有建议 - 都试过了 - 不幸的是,仍然没有运气。不幸的是,位图的 ImageFailed 事件没有提供太多细节。我认为我们可能会遇到图像文件的跨方案限制。

于 2010-10-29T20:13:41.823 回答
0

尝试实现更多的调试输出 - 可能是这样的:

您可以捕获错误。BitmapImage、Image、ImageBrush、MultiScaleImage 都有一个 ImageFailed 事件。只需为其设置一个事件处理程序。

于 2010-10-27T21:52:30.610 回答
0

或试试这个:

<allow-from http-request-headers="*">
于 2010-10-27T21:57:10.637 回答
0

检查提琴手等使用的uri,检查图像是否使用https

于 2010-10-27T21:47:59.733 回答
0

您在第 7 行缺少一个“>”。

于 2010-10-27T20:39:35.157 回答
0

我知道这是一个非常古老的问题,但如果有人仍然陷入类似的情况,Silverlight 不允许跨方案访问。您必须在两端都有 http 或 https。来自 MSDN:Silverlight 中的 URL 访问限制

  • 如果您想托管您的 Silverlight 应用程序并将您的图像存储在不同的服务器上,则限制如下: 如果您将应用程序托管在 HTTP 站点(跨方案)上,则不能将图像存储在使用 HTTPS 方案的站点上.

  • 您可以将图像存储在跨域站点上,只要该
    跨域站点的方案与
    托管您的应用程序的站点的方案相同。

  • 如果应用程序是从 Internet 区域(跨区域)下载的,则在 Windows 上运行的 Silverlight 应用程序无法将图像存储在本地 Intranet 区域中的服务器上
    ,除非目标域是
    localhost。

  • 只要 URL 使用
    相同的方案,您就可以重定向到另一个图像 URL。

于 2014-02-11T22:20:09.980 回答