使用Silverlight 4 WebClient OpenRead通过托管Web服务器上的安全例外完成。有什么问题?

时间:2010-11-23 01:40:03

标签: silverlight webserver

使用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

1 个答案:

答案 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服务器需要先告知特定的文件类型,然后才能提供服务。