在阅读本文前,你应该已经对Sl与WCF的编程模型有所了解。当使用WCF与Siverlight进行通信时,一旦服务端处理数据发生了异常,尽管Silverlight客户端可以使用

AsyncCompletedEventArgs.Error属性判断是否发生错误,但是由于默认情形下WCF的异常信息无法传递到客户端,这导致我们无法准确的判断错误的原因。

      Silverlight与WCF错误处理:Server Not Found(1)

图1

        关于这个问题,MSDN上已经对此进行了阐述:在 Silverlight 中创建和处理错误 ,这篇文章已经将原理解释的很清楚了。不过根据MSDN上的步骤,

在Sl应用程序中会遇到一些问题,本篇文章则带你按步实现Silverlight获取WCF的错误信息.

        1.建立Sl应用程序后,Web项目中添加Siverlight-enabled WCF Service模板

         Silverlight与WCF错误处理:Server Not Found(1)图2   

 

       2. 添加成功后,会自动为项目添加SilverlightFaultBehavior类,仔细看下SilverlightFaultBehavior类的实现,会发现它将Http的状态码改为了200Silverlight与WCF错误处理:Server Not Found(1)

       3.下面进行Web.Config的配置

Silverlight与WCF错误处理:Server Not Found(1)

         图中说明已经很清晰了,一共修改了4个地方,如果你是第一次做,可能每一个地方都要花费不少的时间去理解。如果includeExceptionDetailInFaults没有进行改动,也可以在服务契约的行为进行设置

     [ServiceContract(Namespace = "")]
     [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
     [SilverlightFaultBehavior]
     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
     public class WcfTestService
     {
     }
    

相关文章: