2010-09-01 82 views
0

我有一个正常的.asmx web服务,可以在浏览器中正常加载。当我加载其中的Silverlight应用程序的网页,数据不会加载,我得到一个JavaScript错误,说明;在Silverlight中使用Web服务

网页错误的详细信息

用户代理: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;媒体中心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)
在 操作.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:使用招,我可以看到,这是一个安全问题,我猜双跳一个。

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

+1

你可以发布你用它来初始化Web服务调用的代码? – Kelsey 2010-09-01 16:49:23

+1

听起来就像你需要发布InnerException的内容,如果你想要任何有用的东西。 – 2010-09-01 16:49:47

+0

@凯尔西 - 我创建了一个新的Silverlight 4项目(和相关的Web应用程序来承载它)。在Web应用程序中,我创建了一个Web服务来使用Linq从数据库发布数据。 然后我使用下面的代码在我的MainPage.xaml.cs中使用它。 – sparkymark75 2010-09-01 17:59:18

回答

0

首先,你应该验证当你将它移动到另一台PC时,你的webservice地址是正确的,而你并没有试图连接到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)); 
+0

当我将服务引用添加到Silverligfht项目中时,它会根据上面的代码注释添加所有方法。然后我使用这些来添加我的渲染逻辑。 – sparkymark75 2010-09-01 18:02:10