(由于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
?我应该采取不同的做法吗?也许这就是“添加服务参考”的用途?
答案 0 :(得分:1)
我认为前缀无法识别,因为它缺失了。前缀应该是描述URI指向的服务类型的第一部分。例如http://
的{{1}}等等......
只需添加正确的一个,它应该可以工作..(我从来没有使用Silverlight,也没有任何微软,所以我只是猜测)