2010-05-17 106 views
0

我是新来的Silverlight编程和网络的一般,我一直在试图找到一个这一整天的答案。我试图在VS2010中构建一个非常简单的Silverlight4 Web应用程序,该应用程序在ASP.NET网站上调用Web服务(与Silverlight客户端应用程序完全相同的解决方案,因此不应该存在任何跨域问题???)。我写了一个使用VS'“启用Silverlight的WCF服务的Webservice,它只是返回一个字符串。简单的WCF Web服务从Silverlight调用(需要帮助请!)

我然后写的代码以消耗在Silverlight服务:))

公共的MainPage( { 的InitializeComponent(;

 TestServiceClient proxy = new TestServiceClient(); 
     EndpointAddress address = new EndpointAddress("http://localhost:" + HtmlPage.Document.DocumentUri.Port + 
      "/SilverlightApplication1.web/TestService.svc"); 

     proxy.Endpoint.Address = address; 
     proxy.GetStringCompleted += new EventHandler<GetStringCompletedEventArgs>(proxy_GetStringCompleted); 
     proxy.GetStringAsync(); 

    } 

    void proxy_GetStringCompleted(object sender, GetStringCompletedEventArgs e) 
    { 
     MessageBox.Show(e.Result.ToString()); 
    } 

当我从VS2010运行它时,这很好用。然而,当我把它发布到同一台计算机上我的个人Web服务器(IIS7),我得到一个错误:

网页错误的详细信息

用户代理:Mozilla的/ 4.0(兼容; MSIE 8.0; Windows NT的6.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; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E) 时间戳:2010年五月17日,星期一08:29:51 UTC

消息:Silverlight应用程序中的未处理错误操作期间发生异常,导致结果无效。检查异常详情的InnerException。在System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() 在SilverlightApplication1.TestServiceReference1.GetStringCompletedEventArgs.get_Result() 在SilverlightApplication1.MainPage.proxy_GetStringCompleted(对象发件人,GetStringCompletedEventArgs E) 在SilverlightApplication1.TestServiceReference1.TestServiceClient.OnGetStringCompleted(对象状态) 线:1 字符:1 代码:0 URI:http://thunder.webhop.org:8001/home.html

当我赶在App.xaml.cs例外,我得到以下信息:

System.InvalidOperation例外:评估失败。 在System.Windows.Browser.HtmlWindow.Eval(字符串代码) 在 SilverlightApplication1.App.ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs E)

我应该提到的是,Web服务器,否则似乎做工精细。我可以通过端口8001在其上托管Silverlight应用程序,而不会有任何问题。我不能在我的生活中弄清楚如何进行成功的web服务调用!任何帮助将非常感谢。我浪费了整整一个下午和晚上的时间。我的心在现在圈翻转...... :-(提前

很多很多的感谢! 运气

PS道歉在Silverlight的论坛交叉发布,但有一些问题存在,同时发布。

回答

0

我想这实际上并不是与Web服务调用有关,因为在App.cs中捕获到的异常说“Eval失败”。 我认为它可能是您的proxy_GetStringCompleted处理程序中的代码MessageBox.Show是什么除了幕后的JavaScript警报,也许你正在使用一个JavaScript拦截器被激活或者类似的浏览器?不管怎样,你无法ry是简单地使用除MessageBox.Show()之外的其他东西,例如,

(new ChildWindow { Content = new TextBlock { Text = e.Result.ToString() } }).Show(); 

干杯,亚历克斯