在Silverlight中使用Web服务

时间:2010-09-01 16:45:45

标签: silverlight web-services

我有一个正常的.asmx网络服务,可以在浏览器中正常加载。当我加载其中包含Silverlight应用程序的网页时,数据不会加载,我收到一个javascript错误,说明了这一点;

网页错误详情

  

用户代理:Mozilla / 4.0(兼容;   MSIE 8.0; Windows NT 6.1;三叉戟/ 4.0;   SLCC2; .NET CLR 2.0.50727; .NET CLR   3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)   时间戳:2010年9月1日星期三16:43:32   UTC

     

消息:未处理的错误   Silverlight应用程序异常   在手术期间发生,制作   结果无效。校验   InnerException用于异常详细信息。   在   System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()   在   Operations.Dashboard.DashboardMetrics.GetP200MA_CountCompletedEventArgs.get_Result()   在   Operations.Dashboard.MainPage.client_GetP200MA_CountCompleted(对象   发件人,   GetP200MA_CountCompletedEventArgs e)
  在   .Operations.Dashboard.DashboardMetrics.MetricsSoapClient.OnGetP200MA_CountCompleted(对象   行):1个字符:1代码:0 URI:   http://ukhqdevmp-3790:8080/ChartTestPage.aspx

     

消息:未处理的错误   Silverlight应用程序异常   在手术期间发生,制作   结果无效。校验   InnerException用于异常详细信息。   在   System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()   在   Operations.Dashboard.DashboardMetrics.GetP200C_CountCompletedEventArgs.get_Result()   在   Operations.Dashboard.MainPage.client_GetP200C_CountCompleted(对象   发件人,   GetP200C_CountCompletedEventArgs e)
  在   Operations.Dashboard.DashboardMetrics.MetricsSoapClient.OnGetP200C_CountCompleted(对象   行):1个字符:1代码:0 URI:   http://ukhqdevmp-3790:8080/ChartTestPage.aspx

这一切都在VS中运行良好但是当通过IIS从另一台PC访问它时,它不起作用。

MetricsSoapClient client = new MetricsSoapClient();
client.GetP200C_CountCompleted += new EventHandler<DashboardMetrics.GetP200C_CountCompletedEventArgs>(client_GetP200C_CountCompleted);
client.GetP200C_CountAsync(yearStart, yearEnd);
client.GetP200MA_CountCompleted += new EventHandler<DashboardMetrics.GetP200MA_CountCompletedEventArgs>(client_GetP200MA_CountCompleted);
client.GetP200MA_CountAsync(yearStart, yearEnd);

public void client_GetP200C_CountCompleted(object sender, DashboardMetrics.GetP200C_CountCompletedEventArgs e)
{ ... 

UPDATE :使用Fiddler,我可以看到这是一个安全问题,我猜的是双跳一个。

用户'DOMAIN \ UKHQDEVMP-3790 $'登录失败。

1 个答案:

答案 0 :(得分:0)

首先,您应该验证当您将其移动到另一台PC时,您的Web服务地址是正确的,并且您没有尝试连接到localhost或与Visual Studio环境相关的内容。

我记得有这个问题,但非常模糊,我不记得我的解决方案是什么,所以我回过头来看一下以前项目的代码以及如何设置Web服务。这是一个很长的镜头,但如果Web服务设置不正确,我的代码可能会帮助您指明正确的方向。检查我的以下行,看看它是否对任何事情有帮助(这是用Silverlight 3完成的):

Uri uri = new Uri(Application.Current.Host.Source,
    "../Services/YourWebService.asmx");

// notice this line is commented out and a * is used for biniding instead
//System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding(); // "*"

YourWebService.YourWebServiceSoapClient = 
    new YourWebService.YourWebServiceSoapClient("*",
            new System.ServiceModel.EndpointAddress(uri));