【问题标题】:Silverlight cross domain callsSilverlight 跨域调用
【发布时间】:2013-08-17 00:38:42
【问题描述】:

我是 Silverlight 的新手,尤其是 Silverlight 5 中的 URL 访问限制。 我正在尝试使用下面的代码来访问任何域,显然我不能因为这些网站上缺少 crossdomain.xml 和 clientaccesspolicy.xml。

HtmlWeb.LoadAsync("http://www.otherwebsite.com", OnCallback); 

if (htmlDocumentLoadCompleted.Error != null)
{
  var htmlDocument = htmlDocumentLoadCompleted.Document;
  if (htmlDocument !=null)
   {
    MessageBox.Show("Passed!");
   }
}

因此,我遇到了令人讨厌的错误:

{System.Security.SecurityException ---> System.Security.SecurityException: Security error.
   at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)

我已经尝试了几个选项,在有和没有提升信任的情况下进出浏览器。 所以,我的问题是有可能让它在浏览器中工作还是在浏览器中工作?

【问题讨论】:

    标签: c# silverlight html-agility-pack silverlight-5.0


    【解决方案1】:

    服务应该共享跨域策略。例如amazon crossdomain。 这是使用该服务的唯一可能方式。

    统一更新: 来自MSDN

    Silverlight 受信任的应用程序在扩展的沙箱中运行 这允许它访问正常的网络和本地资源 Silverlight 应用程序被明确拒绝访问 安全原因。

    所以,我认为你应该给你的应用程序elevated trust 并在浏览器外或浏览器内运行它(应用程序)(如果仅在管理员权限下)。

    还有:URL Access Restrictions

    【讨论】:

    • 其实我不是专门指一个服务,而是指一个普通的网页。似乎添加 webbrowser 控件以某种方式解决了这个问题,当然需要开销。
    • 根据您的建议,我再次尝试,但没有成功。我在浏览器中的提升信任下运行应用程序,我收到上述错误。另外,当我在浏览器中运行它时,以提升的信任度,我得到 htmlDocument == null。
    • 根据这个stackoverflow.com/questions/2262450/…可以覆盖Silverlight 4及以上服务器的跨域策略。在 Silverlight 4 中,您可以使用受信任的“浏览器外”应用程序。但是上面的示例仍然给我错误
    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多