Silverlight 4 wcf调用在服务器上以静默方式失败,但在调试时不会失败

Silverlight 4 wcf调用在服务器上以静默方式失败,但在调试时不会失败,wcf,silverlight,Wcf,Silverlight,我有一个Silverlight 4应用程序,它与“manager”类对话,与WCF服务(.net 4)对话,WCF服务使用Microsoft.ApplicationBlocks.Data库与我的SQL数据库对话 我的问题是,除了Silverlight应用程序之外,没有出现异常情况 发生的情况是,对数据库的插入失败,创建一个SQLException,然后将错误进一步抛出到管理器使用的生成的服务引用代码中,管理器在完成的事件处理程序中发现error属性不是null。这会向Silverlight应用程

我有一个Silverlight 4应用程序,它与“manager”类对话,与WCF服务(.net 4)对话,WCF服务使用Microsoft.ApplicationBlocks.Data库与我的SQL数据库对话

我的问题是,除了Silverlight应用程序之外,没有出现异常情况

发生的情况是,对数据库的插入失败,创建一个SQLException,然后将错误进一步抛出到管理器使用的生成的服务引用代码中,管理器在完成的事件处理程序中发现error属性不是null。这会向Silverlight应用程序抛出一个事件,向用户显示一条消息,说明发生了错误

当我在本地调试我的应用程序时,这可以工作,但当应用程序在实时/生产服务器上时,它会无声地失败,不会显示任何错误消息

如果我从服务器上运行的wcf服务(非本地)生成服务引用,并使用Silverlight应用程序的本地实例,它也可以正常工作,这使我认为错误发生在服务引用(生成的代码)和Silverlight通信中

该服务托管在“手工编码”的主机应用程序中,服务器上的Silverlight应用程序托管在IIS中。它们都使用http而不是https

我浏览了互联网,但没有发现任何与这种情况有关的东西。我不杀死对象,因此防止异常返回到不存在的对象

简言之,管理器在本地系统上正确地接收和抛出事件,但在服务器上部署时却没有


需要WCF专家请

因此,在进行了一些毫无结果的搜索之后,我的collegue构建了一个测试应用程序,在该应用程序中,他基于以下示例构建了一个自定义silverlight Fault Contract类:

虽然这有助于从服务而不是一般的垃圾Silverlight spews获取特定错误,但我们仍然无法在屏幕上显示错误

我先前猜测通信失败是不正确的。相反,这只是一个事实,即结果对UI线程没有任何影响。我们使用Dispatcher跳回UI线程:

Deployment.Current.Dispatcher.BeginInvoke(
            () =>
            {
                //throw event to window which shows error window
            }
            );
显示了真实的错误。我仍然不知道为什么生产服务器上的应用程序需要这样做,但在我的本地主机上,无论是否处于调试模式,它都可以正常工作


如果任何对这一事件的技术细节有更多了解的人读到了这篇文章,请解释一下这里到底发生了什么。

因此,在一些毫无结果的搜索之后,我的同事构建了一个测试应用程序,他在其中基于以下示例构建了一个自定义silverlight Fault Contract类:

虽然这有助于从服务而不是一般的垃圾Silverlight spews获取特定错误,但我们仍然无法在屏幕上显示错误

我先前猜测通信失败是不正确的。相反,这只是一个事实,即结果对UI线程没有任何影响。我们使用Dispatcher跳回UI线程:

Deployment.Current.Dispatcher.BeginInvoke(
            () =>
            {
                //throw event to window which shows error window
            }
            );
显示了真实的错误。我仍然不知道为什么生产服务器上的应用程序需要这样做,但在我的本地主机上,无论是否处于调试模式,它都可以正常工作

如果任何对这一事件的技术细节有更多了解的人读到这篇文章,请解释一下这里到底发生了什么