编辑:切换到Silverlight 4,这让我更进一步。
我有一个xml,可以在sharepoint库中存储高分。 sharepoint站点是https,我可以点击xml的“复制快捷方式”,它出现在浏览器中,所以我知道我可以访问它。
我正在尝试使用Silverlight中的webclient来拉动此xml,如下所示。
Uri url = new Uri("https://server/HighScores.xml", UriKind.Absolute);
WebRequest.RegisterPrefix("https://",System.Net.Browser.WebRequestCreator.ClientHttp);
var client = new WebClient();
client.Credentials = new NetworkCredential("username", "password", "domain");
client.UseDefaultCredentials = false;
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(url);
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string xmlData = e.Result;
HtmlPage.Window.Alert(xmlData);
}
}
使用此代码,我的Silverlight游戏会弹出,但窗口中的Windows凭据登录会立即显示。当我在这里输入正确的crdentials时,正如我在后面的代码中所做的那样,我得到了followig错误。
e.Error {System.Security.SecurityException ---> System.Security.SecurityException:安全性错误。 在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在System.Net.Browser.ClientHttpWebRequest。<> c_ DisplayClass5.b _4(Object sendState) 在System.Net.Browser.AsyncHelper。<> c_ DisplayClass2.b _0(Object sendState) ---内部异常堆栈跟踪结束--- 在System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state) 在System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果) 在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)} System.Exception {System.Security.SecurityException}
任何帮助?
答案 0 :(得分:0)
在Silverlight 4之前,WebClient尚未实现凭据。您是否正在使用早期版本?
Silverlight 4 – Credentials, we’ve got it! Mark Monster December 2nd, 2009
修改强> 由于您现在获得安全性异常,因此跨域访问策略文件可能存在问题。以下是一些描述Silverlight / WebClient将查找的两种类型的客户端访问策略文件的链接。
URL Access Restrictions in Silverlight
Network Security Access Restrictions in Silverlight
如果您拥有https://server/HighScores.xml的控制权,则在实施客户端访问策略文件时不会有太多麻烦。