【问题标题】:Silverlight failing with Cross Domain ErrorSilverlight 因跨域错误而失败
【发布时间】:2011-12-19 13:40:39
【问题描述】:

我有一个使用 ASP.NET 构建的应用程序,其中嵌入了与 WCF 后端通信的 Silverlight 对象。它是这样设置的:

服务器 1:在 IIS7 上托管 ASP.NET 网站

服务器 2:在 IIS7 上托管 WCF 应用程序

我的机器将尝试通过 Internet 访问服务器 1 以登录网站。服务器 1 将通过服务器 2 上的内部网络使用 WCF Web 服务对用户进行身份验证。我可以这样做,但是当它加载 silverlight 对象时它崩溃,抱怨 CrossDomain/ClientAccessPolicy 失败。因此,为了确保我将这两个文件放在服务器 1 和服务器 2 上的 inetpub/wwwroot 中的每个文件夹中,只是为了确定。但我仍然遇到同样的错误。

当我从服务器 1 运行应用程序时,它可以通过其本地网络 IP 连接到站点并且一切正常,当我在自己的机器上从 Visual Studio 2010 运行 ASP.NET 应用程序时它也可以工作,使用指向服务器 2 的 Web 服务引用。

我几乎是束手无策了,我尝试了这么多的红鲱鱼,但没有一个奏效。我什至不确定是 Silverlight/WCF 还是每台服务器上的 IIS 配置破坏了它。

如果有人能帮助我阐明这一点,我将不胜感激。

谢谢, 斯图尔特。

【问题讨论】:

    标签: asp.net silverlight wcf iis-7


    【解决方案1】:

    我发现了我的问题。我没有意识到 Silverlight 应用程序正在尝试访问受防火墙限制的 Web 服务,因此我必须创建另一个 Web 服务来重新路由通过该网站并到达原始 Web 服务。

    多么痛苦啊!

    【讨论】:

      【解决方案2】:

      一个想法可能是使用 fiddler 并找到发出 crossdomainpolicy xml 请求的请求。这是失败了吗?检查它指向的地址。我使用它调试了我的问题。它指向服务器的根目录,而我的跨域策略 xml 位于 WCF 项目文件夹中。

      【讨论】:

      • 我在我自己的机器上使用 fiddler 来查看正在发送什么数据,但据我所知,它甚至没有要求 clientaccesspolicy,我应该在托管的服务器上运行 fiddler Silverlight 应用程序?
      • 我认为您应该至少看到一个对 crossdomainpolicy xml 或 clientaccesspolicy xml 的请求。尝试清除提琴手中的当前请求并重新运行它。
      • 这是我感到困惑的地方,如果我在自己的机器上运行 fiddler,它将如何知道服务器 1 和服务器 2 之间正在发出什么请求?虽然当我尝试在服务器 1 上运行提琴手时,它几乎没有显示任何流量,除非我误解了如何使用提琴手?
      • 这些请求是由运行您的 silverlight 应用程序的浏览器发出的。您的页面是否刷新(不是 silverlight 视图,而是浏览器页面),如果没有,则所有请求都在客户端浏览器和服务器 2(托管 WCF 项目)之间进行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2011-08-27
      • 2011-11-03
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多