无法使用silverlight从sharepoint下载xml。

时间:2011-01-11 22:01:55

标签: c# silverlight webclient

编辑:切换到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}

任何帮助?

1 个答案:

答案 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的控制权,则在实施客户端访问策略文件时不会有太多麻烦。