代码之家  ›  专栏  ›  技术社区  ›  James Hay

为什么我的WebClient请求根据其托管解决方案的不同而工作?

  •  0
  • James Hay  · 技术社区  · 15 年前

    在它非常基本的形式中,我在page.xaml代码的后面有一个WebClient请求一些XML。比如:

        public Page()
        {
            InitializeComponent();
    
            Uri uri = new Uri("Dummy.xml", UriKind.Relative);
    
            WebClient webClient = new WebClient();
            webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
            webClient.DownloadStringAsync(uri);
        }
    
        void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                //Do something
            }
        }
    

    如果我将我的Silverlight项目设置为通过ASP.NET宿主页运行,然后将dummy.xml放在clientbin文件夹(相对于xap)中,它就可以正常工作。

    如果我只使用自动生成的测试页选项设置项目,并再次将XML相对于XAP放置,则请求不起作用(尽管已完成的事件确实会激发)。

    我的问题是为什么?是否要求动态下载的任何Silverlight项目都必须位于服务器上?

    干杯 J

    2 回复  |  直到 15 年前
        1
  •  1
  •   Graeme Bradbury    15 年前

    首先,尽量避免使用自动生成的测试页。它要求您了解当XAP作为文件被访问时,默认情况下Silverlight安全性模型是如何工作的。

    为了回答您的问题,您遇到了旨在防止未经授权的跨域访问的安全性。

        2
  •  0
  •   mattmanser    15 年前

    是的,没有可供它连接的Web服务器!自动生成的测试页只直接打开该xap,而不调用Visual Studio的Web服务器。如果要执行此操作,必须使用其他选项创建带有Silverlight项目的网站。或者,您可以将XML文件作为资源嵌入到xap中,并作为资源访问它。