在Silverlight中使用web服务

在Silverlight中使用web服务,silverlight,web-services,Silverlight,Web Services,我有一个正常的.asmxweb服务,可以在浏览器中正常加载。当我加载包含Silverlight应用程序的网页时,数据没有加载,我得到一个javascript错误,该错误表示: 网页错误详细信息 用户代理:Mozilla/4.0(兼容; MSIE8.0;WindowsNT6.1;Trident/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.

我有一个正常的.asmxweb服务,可以在浏览器中正常加载。当我加载包含Silverlight应用程序的网页时,数据没有加载,我得到一个javascript错误,该错误表示:

网页错误详细信息

用户代理:Mozilla/4.0(兼容; MSIE8.0;WindowsNT6.1;Trident/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.RaiseExceptionIfEssential() 在 Operations.Dashboard.DashboardMetrics.GetP200MA\u CountCompletedEventArgs.get\u Result() 在 Operations.Dashboard.MainPage.client\u GetP200MA\u CountCompleted(对象 发件人, GetP200MA\u CountCompletedEventArgs e)
在 .Operations.Dashboard.DashboardMetrics.MetricsSoapClient.OnGetP200MA\u CountCompleted(对象 状态)行:1字符:1代码:0 URI:

消息:中存在未处理的错误 Silverlight应用程序是一个例外 在操作过程中发生,使 结果无效。检查 InnerException获取异常详细信息。 在 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfEssential() 在 Operations.Dashboard.DashboardMetrics.GetP200C\u CountCompletedEventArgs.get\u Result() 在 Operations.Dashboard.MainPage.client\u GetP200C\u CountCompleted(对象 发件人, GetP200C\u CountCompletedEventArgs e)
在 Operations.Dashboard.DashboardMetrics.MetricsSoapClient.OnGetP200C_CountCompleted(对象 状态)行:1字符:1代码:0 URI:

它在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)
{ ... 

MetricsSoapClient=new MetricsSoapClient();
client.GetP200C\u CountCompleted+=新事件处理程序(client\u GetP200C\u CountCompleted);
client.GetP200C_CountAsync(yearStart,yearEnd);
client.GetP200MA\u CountCompleted+=新事件处理程序(client\u GetP200MA\u CountCompleted);
client.GetP200MA\u CountAsync(年初、年末);
public void client_GetP200C_CountCompleted(对象发送方,DashboardMetrics.GetP200C_CountCompletedEventArgs e)
{ ... 
更新:使用Fiddler,我可以看出这是一个安全问题,我猜是双跳问题


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

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

我记得有过这个问题,但很模糊,我不记得我的解决方案是什么,所以我回头看了看以前项目的一些代码,以及web服务是如何设置的。这是一个远大的希望,但如果web服务设置不正确,我的代码可能会帮助您指出正确的方向。检查我的以下行,看看我的答案f它对任何事情都有帮助(这是通过Silverlight 3完成的):


您可以发布用于初始化web服务调用的代码吗?如果您需要任何有用的内容,听起来您也需要发布InnerException的内容。@Kelsey-我创建了一个新的Silverlight 4项目(以及相关的web应用程序来承载它)。在web应用程序中,我创建了一个web服务,使用Linq从数据库发布数据。然后,我在MainPage.xaml.cs中使用下面的代码使用它。MetricsSoapClient=new MetricsSoapClient();client.GetP200C_CountCompleted+=new EventHandler(client_GetP200C_CountCompleted);client.GetP200C_CountAsync(yearStart,yearEnd);client.GetP200MA_CountCompleted+=新事件处理程序(client_GetP200MA_CountCompleted);client.GetP200MA_CountAsync(yearStart,yearEnd);public void client_GetP200C_CountCompleted(对象发送方,DashboardMetrics.GetP200C_CountCompleted事件参数){…}发布更多信息时,您应该编辑原始问题。我已将您的代码移到您的问题中。请注意您的代码与我在下面发布的代码之间的差异。确保您的Uri正确。尝试像我一样实例化您的web服务,并包括所有详细信息。我认为您的web服务指向本地或相对地址当我将服务引用添加到Silverligfht项目时,它会根据上面的代码注释将所有方法添加到中。然后我使用这些方法添加渲染逻辑。
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));