2010-10-09 61 views
0

访问本地主机URI(重新发布的,因为SO停运;道歉,如果另一种重新出现)问题从Silverlight的

我建立一个Silverlight应用程序,将在Azure上运行。我的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; 
     } 

     // ... 

    } 

但是,这是行不通的。消息框显示了错误:

The URI prefix is not recognized.

以下是完整的例外:

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

我认为前缀不被识别,因为它缺失。前缀应该是描述你的URI指向什么样的服务的第一部分。例如svn://http://等..

只需添加正确的,它应该工作。(我从来没有用过的Silverlight没有什么Microsoftish所以我只是猜测)

+0

我想要什么前缀为本地主机? HTTP://本地主机? – 2010-10-09 16:40:30

+0

我认为你没有明白这一点。什么样的服务通过端口88在线?一个网络服务器? – Jack 2010-10-09 16:43:23

+0

这可以帮助:http://stackoverflow.com/questions/2246735/silverlight-webrequest-fails-with-the-uri-prefix-is-not-recognized – Jack 2010-10-09 16:46:03