【问题标题】:cross-domain policy error in Silverlight with WCFSilverlight 中的跨域策略错误与 WCF
【发布时间】:2011-03-27 20:39:33
【问题描述】:

将 Silverlight 应用程序连接到 WCF 服务时出现以下错误。我将此 wcf 托管为自托管服务。

尝试向 URI“http://lmr-hero/iSponsorWebSite/projectService.svc/basic”发出请求时出错。这可能是由于在没有适当的跨域策略或不适合 SOAP 服务的策略的情况下尝试以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件并确保它允许发送与 SOAP 相关的 HTTP 标头。此错误也可能是由于在 Web 服务代理中使用内部类型而不使用 InternalsVisibleToAttribute 属性造成的。有关详细信息,请参阅内部异常。

这个错误的可能原因是什么?

【问题讨论】:

  • 您的服务托管在哪里?
  • 实际上,我首先将其作为自托管服务托管。但是由于当我将它作为自托管服务托管时我找不到放置这两个 xml 文件(clientaccesspolicy.xml 和 crossdomain.xml)的地方,所以我将它托管在 IIS 服务器中并将这两个 xml 放入我的“C: \Inetpub\wwwroot'。然后它完美地工作了。谢谢大家的支持!
  • 在本地机器上工作正常。但是当我在服务器上的 IIS 中部署 WCF 时,它不起作用。它抛出同样的错误。当我试图打开 crossdomain.xml 时,它没有在 server 上打开。它说'未指定的错误错误处理资源'macromedia.com/xml/dtds/cross-domain-policy.dtd'。 '

标签: silverlight wcf


【解决方案1】:

使用 Silverlight 使用 Web 服务时,请注意在 Silverlight 中正确设置 WCF Web 服务。与控制台模式客户端不同,在 Silverlight 中,您不能只在解决方案中创建 WCF 新项目,而必须在 Silverlight 解决方案的 .Web 部分下,右键单击,添加一个名为“启用 Silverlight 的 WCF 服务”的新项目”。现在您可以转到 Silverlight 应用程序文件夹,添加服务引用,您将不会收到此运行时错误。这将避免原始发布者提到的运行时错误。

【讨论】:

    【解决方案2】:

    如果您的 Silverlight 应用程序未托管在与服务相同的域中,则您需要将 clientaccesspolicy.xml 或 crossdomain.xml 文件放在托管服务的服务器上。

    详情见此链接:http://msdn.microsoft.com/en-us/library/cc197955%28VS.95%29.aspx

    【讨论】:

    • 我把这两个 xml 文件都放到了我的 'C:\Inetpub\wwwroot' 中,并且成功了。感谢支持:D
    • 当我的 Silverlight 应用程序和 WCF 服务都托管在带有 ASP.NET 开发服务器的 Visual Studio 中(即未托管在 IIS 中)时,我遇到了这个问题。要修复它,我必须将 WCF 主机网站的虚拟路径更改为 /。原因是 Silverlight 在托管服务的域的根目录中查找 clientaccesspolicy.xml。要更改虚拟路径,请右键单击网站并选择属性。
    • 在本地机器上工作正常。但是当我在服务器上的 IIS 中部署 WCF 时,它不起作用。它抛出同样的错误。当我试图打开 crossdomain.xml 时,它没有在 server 上打开。它说'未指定的错误错误处理资源'macromedia.com/xml/dtds/cross-domain-policy.dtd'。 '
    【解决方案3】:

    右键单击 .svc 文件并在浏览器中点击查看。首先检查它是否被托管并正确运行。这将为您提供一个良好的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 2010-09-09
      • 2011-09-22
      • 2011-08-27
      • 2014-01-02
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多