假设我不控制服务器并且不能将 crossdomain.xml 或 clientaccesspolicy.xml 文件放在那里,我怎样才能在 Silverlight 应用程序内对外部 REST API 进行 http 调用,而不必使用 javascript 来执行它然后将数据传递给 Silverlight 应用程序?
问问题
794 次
4 回答
0
您可以构建自己的代理服务器(或服务器应用程序,或 Web 应用程序中的 http 处理程序)以将请求转发到所需的主机。
于 2013-02-05T04:46:20.267 回答
0
没有其他办法,要么使用crossdomain.xml和clientaccesspolicy.xml ,要么使用javascript将数据传递给应用程序来解决这个问题。
于 2013-02-05T10:51:28.370 回答
0
我最终实现了一个类似于这里描述的 ASP.NET 代理
然后将以下代码添加到 Silverlight 应用程序:
public class Handler : IWebRequestCreate
{
public WebRequest Create(Uri uri)
{
return WebRequestCreator.ClientHttp.Create(new Uri("http://localhost:3234/Proxy.ashx?" + Uri.EscapeUriString(uri.OriginalString)));
}
}
public MainPage()
{
InitializeComponent();
HttpWebRequest.RegisterPrefix("http://", new Handler());
HttpWebRequest.RegisterPrefix("https://", new Handler());
(...rest of code...)
}
一个警告是,在代码的其余部分,必须小心使用HttpWebRequest.Create
,永远不要HttpWebRequest.CreateHttp
于 2013-02-13T16:50:27.927 回答
0
如上所述,由于微软从头开始构建的限制,代理服务器是唯一的答案。我与 Silverlight 合作多年,希望他们从未这样做过。
但是,我创建了这个库: https ://bitbucket.org/MelbourneDeveloper/restclient-.net
它有一个传递(代理)REST 服务的实现,该服务与 BitBucket 以及 Silverlight 示例进行对话,这使得 Silverlight 中的客户端应用程序看起来好像直接与 BitBucket 对话。我在示例中包含了为您提供客户端访问策略的代码。
于 2016-08-14T08:43:49.643 回答