好的,我在这里看到了一些非常相似的问题,但似乎都没有按照我的喜好回答。我创建了一个Silverlight应用程序,它调用几个服务来填充数据库中的各种组合框。我在本地机器上运行时没有太多麻烦。
所以现在我想将它部署到我们的网络服务器。让ISS7加载Silverlight应用程序相对简单。但是,我的服务似乎都没有正常工作,因为组合框是空的。在IE中我收到以下错误:
消息:Silverlight应用程序中的未处理错误操作期间发生异常,导致结果无效。检查InnerException以获取异常详细信息。在System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() 在MyTestPage.ViewModel.MyService.GetInfoCompletedEventArgs.get_Result() at MyTestPage.ViewModel.MainPageViewModel.b__2(Object s,GetInfoCompletedEventArgs ea) at MyTestPage.ViewModel.MyService.MyServiceClient.OnGetInfoCompleted(Object state) 线:1 Char:1 代码:0 URI:http://www.mywebsite.com/MyTestPage.aspx
我的问题是,只有在Web服务器上部署时才会出现此错误,而且我不知道如何调试此问题。错误说要检查InnerException,但我还没有找到答案(经过几个小时的搜索),告诉我应该怎么做。
我已尝试浏览这些服务,但我可以使用域名http://test.myserver.com/Services/MyService.svc进行浏览。但是,当登录到服务器并使用http://localhost:3456/Services/MyService.svc - 这是ServicesReferences.ClientConfig文件中的路径时 - 无法找到它。
这里的一些答案似乎建议使用clientaccesspolicy.xml文件,但我不明白为什么如果服务与应用程序托管在同一服务器上,这应该是必要的 - 在本地计算机上调试时不需要它们。尽管我有所保留,但我尝试将clientaccesspolicy.xml文件添加到应用程序的根目录,但这仍然没有任何区别。
所以我有几个问题:
1)当我在Web服务器上运行应用程序时,如何访问InnerException?是否有我可以查看或打开的特定日志文件?
2)如果出于某种原因,我试图以跨域方式访问服务(即使它们位于同一服务器上),如何配置应用程序以便不需要这样做?
更新:
好的,我能够让跟踪工作。我现在可以在加载时看到页面上的跟踪详细信息,但它并没有真正告诉我任何有用的信息。我还添加了将详细信息写入磁盘的选项。最初这个文件没有被写入,我无法理解为什么。然后我注意到刷新我的silverlight应用程序并没有触发对日志的写入。只有当我手动浏览服务时才更新日志文件。这似乎向我表明,我的Silverlight应用程序根本没有达到服务(出于某种原因)。我尝试删除View Model对象并直接从xaml代码隐藏文件中命中服务,但这也没有任何区别。
此时花了两天多的时间试图解决这个问题,我正在考虑从头开始。
在我看来,将开发机器上运行的东西部署到网络服务器应该不难。
答案 0 :(得分:1)
我几乎放弃了我的初步方法。我还有另外一篇关注此视频http://www.silverlight.net/learn/videos/all/net-ria-services-intro/。它使用域服务而不是WCF服务,实际上它很容易让它在Web服务器上运行。这个例子现在已经有两年了,所以也许现在有更好的方法可以做到这一点(我愿意接受建议),但至少它在尝试它的一小时内工作(相比于2.5天而且无处可去)。