从Silverlight访问localhost URI时出现问题

时间:2010-10-09 16:30:35

标签: silverlight wcf rest service azure

(由于SO中断而重新发布;如果另一个重新出现则道歉)

我正在构建一个将在Azure上运行的Silverlight应用程序。我的VS解决方案有两个项目:Web角色和Silverlight。 Web角色具有可用的服务。 (我可以转到localhost:88/expenseservice.svc/expenses并获取我想要的数据。)

我正在尝试从Silverlight访问该数据:

    private void MainPage_Loaded(object sender, RoutedEventArgs args)
    {
        WebClient data = new WebClient();
        data.DownloadStringCompleted += new DownloadStringCompletedEventHandler(data_DownloadStringCompleted);
        Uri dataSource = new Uri("localhost:88/expenseservice.svc/expenses");
        data.DownloadStringAsync(dataSource);
    }

    void data_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error != null) 
        {
            MessageBox.Show(e.Error.InnerException.Message);
            return;
        }

        // ...

    }

然而,这不起作用。消息框显示错误:

  

无法识别URI前缀。

以下是完整的例外情况:

e.Error.InnerException = {System.NotSupportedException: The URI prefix is not recognized.
   at System.Net.WebRequest.Create(Uri requestUri)
   at System.Net.WebClient.GetWebRequest(Uri address)
   at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken)}

是否抱怨localhost?我应该采取不同的做法吗?也许这就是“添加服务参考”的用途?

1 个答案:

答案 0 :(得分:1)

我认为前缀无法识别,因为它缺失了。前缀应该是描述URI指向的服务类型的第一部分。例如http://的{​​{1}}等等......

只需添加正确的一个,它应该可以工作..(我从来没有使用Silverlight,也没有任何微软,所以我只是猜测)