• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ueqt
博客园    首页    新随笔    联系   管理    订阅  订阅

Silverlight 3 中改进的对于获取WCF服务的异常信息处理

      在Silverlight 3之前如果WCF发生了异常,Silverlight将获取到“远程服务器返回了错误: NotFound。”的消息,无法获取到真实的异常,这为开发调试以及寻找错误带来了困扰。
      但是Silverlight 3为我们带来了新的网络堆处理机制,从而使我们可以无缝地实现Silverlight端获取到WCF的真实异常信息。
      原先对于下面这样一个WCF异常
Code
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode 
= AspNetCompatibilityRequirementsMode.Allowed)]
    
public class Service1
    {
        [OperationContract]
        
public int DoWork(int x, int y)
        {
            
return x / y;
        }

    }

     当Silverlight端捕获时就会出现Not Found的错误
Code
        public MainPage()
        {
            InitializeComponent();
            ServiceReference1.Service1Client client 
= new SilverlightApplication2.ServiceReference1.Service1Client();
            client.DoWorkCompleted 
+= new EventHandler<SilverlightApplication2.ServiceReference1.DoWorkCompletedEventArgs>(client_DoWorkCompleted);
            client.DoWorkAsync(
1, 0);

        }

        
void client_DoWorkCompleted(object sender, SilverlightApplication2.ServiceReference1.DoWorkCompletedEventArgs e)
        {
            
if (e.Error == null)
            {
                MessageBox.Show(e.Result.ToString());
            }
            
else
            {
                MessageBox.Show(e.Error.Message);
            }
        }

    现在我们只需要给WCF服务加上    [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 这个Attribute,然后在客户端的初始化的地方加上

Code
            bool registerResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
            
bool httpsResult = WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

    我习惯加在Application_Startup事件中,这样一加就可以正常获取到“试图除以零。     ”的错误了。

    参考资料:
http://blogs.msdn.com/silverlight_sdk/archive/2009/08/12/new-networking-stack-in-silverlight-3.aspx
http://blogs.msdn.com/carlosfigueira/archive/2009/08/15/fault-support-in-silverlight-3.aspx
http://tomasz.janczuk.org/2009/07/pubsub-sample-using-http-polling-duplex.html
http://blogs.msdn.com/silverlightws/
http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightws&DownloadId=3473
posted @ 2009-08-28 09:58  ueqt  阅读(1048)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3