使用WebClient对象在Silverlight Web应用程序中检索文本文件的内容似乎很简单。
它在我们的本地服务器上的Intranet设置中工作,但是当部署在托管的“hostgator”服务器上时,WebClient会获得安全性异常。根据众多网络博客的建议,我尝试了跨域访问策略和crossdomain.xml,没有结果 - 难怪,所有都在同一个域中。
private void LoadCSVFile(string csvFile)
{
try
{
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri(csvFile, UriKind.Absolute));
}
catch (Exception ex)
{
string errorMessage = String.Format("Ex accessing csv: {0}\n{1}", csvFile,
} }
// csvFile是绝对路径:http://myserver.com/myapplication:port/sourcefiles/file.csv // sourcefiles是包含csv文件的同一网站中的虚拟目录
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
try
{
using (System.IO.StreamReader reader = new System.IO.StreamReader(e.Result))
{
mainFileData = new List<string>();
string line;
}
}
catch (Exception ex)
{
string errorMessage = ex.InnerException;
}否则 { “这里是异常的地方!!!!!!!所以,e.Error不是null” } }
异常的文本内容为:System.SecurityException:System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)等的安全性错误。
花了2天时间进行gooogling而没有结果。
请帮忙。 V
答案 0 :(得分:1)
要检查的几件事情:
(1)您列出的URL格式(http://myserver.com/myapplication:port/sourcefiles/file.csv)看起来很奇怪。不应该是http://myserver.com:port/myapplication/sourcefiles/file.csv吗?或者这只是一个错字?
(2)您访问的端口号是多少? Silverlight WebClient只能访问端口80和443。
(3)您可以使用直接URL访问该文件吗?有时,Web服务器需要先告知特定的文件类型,然后才能提供服务。